java中的面向对象的三大基本特征是:【封装】、【继承】、【多态】
一、封装
对象要有一个明确的边界;边界的划分(对象各司其职、对象的粒度、对象的可重用性)
具体来说:
1.属性: 私有 private(提供set和get方法)
2.方法: 公开或私有public/private
3.方法声明 –>公开
方法实现 –>隐藏
实现改变时,对对象的使用者没有影响。
二、继承
共性放到父类,特性放到子类;子类,父类 –>其实就是特殊 –>一般
1.关键字: extends 例如:Dog extends Animal{}
2.java中一个类最多只能有一个直接的父类,即单继承(具有简单性、树形结构),
C++中是单继承
java中要实现多继承,通过接口来实现。
3.父类中所有属性和方法都能继承给子类;父类中的私有方法不能继承给子类。
4.java中的访问修饰符
访问修饰符
访问权限
继承
private
本类内部
不能继承
default
本类+同包
同包子类可以继承
protected
本类+同包+不同子包
可以继承
public
公开
可以继承
5.构造对象过程
(1)分配空间
(2)递归地构造父类对象
a. 父类 初始化属性
b. 父类 构造方法
(3)初始化属性
(4)调用构造方法
6.super
用法:
super() 调用父类的构造方法,只能出现在构造方法的第一行
super.方法名 super表示父类的对象,通过它去调用父类的方法
注意:在写类的时候,一定要写默认无参的构造方法,如果一个构造方法的
第一句既不是this(),也不是super()时,那么就会在这里隐含的调用
他的父类的无参的构造方法,即隐含的有super()。
三、多态
运行时多态。
子类的对象放在父类的引用中,例如 Animal a=new Dog,子类对象当父类对象来使用。
1.多态原则:
(1)对象类型不变
(2)只能用引用调用其引用类型中定义的方法
(3)运行时,根据对象的实际类型去找子类覆盖之后的方法
例子:
有Animal类中有eat()和sleep()两个方法,sleep()中睡8小时;子类Dog中有
eat()方法,sleep()方法中睡6小时,还有wangwang()方法。
现创建Animal a=new Dog()不能调用a.wangwang(),调用a.sleep()输出睡6小时。
2.对象的强制转换
格式: 引用 instanceof 类型
引用所指的对象是否与类相符,返回值boolean值。
用法:
Animal a=new Cat()
if(a instanceof Dog)
{
Dog d=(Dog)a
d.wangwang()
}
说明:如果只有Dog d=(Dog)a运行时错误,因为a是Cat而不是Dog (多态原则第一条)
3.多态的灵活变换
(1)用于参数列表上:
public void m(A a){} 可以用A类的任何子类对象作为参数
(2)用在返回值上:
public A m(){} 这个方法可能返回A类的任何子类对象
Java三大特性
封装,继承,多态,这是JAVA面向对象编程的三大特性了。 一。封装:是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。封装是类的特征之一,应该可以理解,像一些私有的,别的类不可以访问了啊,都有访问权限的,比较安全了。 二。继承:指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。继承有三种方式,实现继承、接口继承和可视继承。 三。多态:简单的说就是,允许将子类类型的指针赋值给父类类型的指针。 实现多态,有二种方式,方法覆盖,方法重载。 JAVA博大精深,不是一言两语就可以说清的,我就不在这里多言了,简单的说了一点点,希望亲能采纳
public class $ {
public static void main(String[] args) {
Animal a1 = new Laohu()
a1.zou()
a1.area()
a1.num()
Animal a2 = new Xiong()
a2.zou()
a2.area()
a2.num()
Animal a3 = new Ma()
a3.zou()
a3.area()
a3.num()
}
}
abstract class Animal {
public abstract void zou()
public abstract void area()
public abstract void num()
}
class Laohu extends Animal {
public void zou() {
System.out.println(”老虎怎么走?”)
}
public void area() {
System.out.println(”老虎生活在什么地区?”)
}
public void num() {
System.out.println(”老虎数量多少?”)
}
}
class Xiong extends Animal {
public void zou() {
System.out.println(”熊怎么走?”)
}
public void area() {
System.out.println(”熊生活在什么地区?”)
}
public void num() {
System.out.println(”熊数量多少?”)
}
}
class Ma extends Animal {
public void zou() {
System.out.println(”马怎么走?”)
}
public void area() {
System.out.println(”马生活在什么地区?”)
}
public void num() {
System.out.println(”马数量多少?”)
}
}
老虎怎么走?
老虎生活在什么地区?
老虎数量多少?
熊怎么走?
熊生活在什么地区?
熊数量多少?
马怎么走?
马生活在什么地区?
马数量多少?
以上就是关于Java中面向对象三大特征全部的内容,如果了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!