面向对象特征
来源:互联网 发布:中超球员数据统计 编辑:程序博客网 时间:2024/06/14 03:26
面向对象三大特征:继承、封装、多态。
重写:发生在父类和子类之间。(继承即为遗传、重写即为变异) 子类的方法名和父类相同,参数列表相同,返回类型也相同。当对子类对象进行方法调用时,会优先调用子类重写的方法。
子类对象创建前,先产生父类对象(默认执行 super (); )。然后在父类对象基础之上,扩展子类特有的属性和方法。所以子类对象中包含完整的父类对象,就可以重用父类中定义的方法和属性。
子类重写父类的方法,要求子类方法访问修饰符大于或等于父类方法修饰符。
super(); 父类无参数列表,则默认执行super();
有参数列表则需要添加super(参数); 作传参处理
final:可以修饰类,方法,变量。
方法被修饰为final,表示该方法不能被重写。
引用类型的变量被修饰为final,表示该变量的值不能改变,即不能指向别的对象。
类被修饰为final ,表示该类不能被继承(太监类)。
访问修饰符(被访问范围由大到小):
public 该类或非该类均可访问
protected 该类及其子类的成员可以访问,同一包中的类也可以访问
默认 相同数据包中的类可以访问
private 只有本类可以访问
private成员
缺省成员
protected成员
public成员
同一类中
是
是
是
是
同一包中的其他类
否
是
是
是
不同包中的子类
否
否
是
是
该类及非该类均可访问
否
否
否
是
封装:
按照信息隐藏原则,将数据隐藏在一起。
特点:信息隐藏、信息集合。
私有属性+get/set方法和公有属性的区别:
1、私有属性不能被直接访问,只能通过公有的get方法(访问器)和set方法(修改器)来进行设值和取值。这样一旦删掉get或set方法,可以将该属性做成只读或只写属性。公有属性无法做到。
2、可以通过修改器在设置属性时,做到数据合法性的验证。公有属性无法做到。
static{
}
称为静态初始化块。在类加载时执行,也就是在对象之前执行。而且只执行一次。
内部类:
在一个类中,再定义一个类,称为内部类。内部类相当于外部类的属性,内部类对象的产生必须依赖于外部类对象。
内部类所产生的class文件格式:外部类类名$内部类类名.class
多态:
允许一个父类变量引用子类的对象,允许一个接口类型变量引用实现类对象。反之不允许。
多态调用时,使用父类变量指向子类对象,只能调用父类中定义的方法或属性,不能调用子类特有的方法或属性。如果子类重写了父类的方法,那么调用时,会优先调用子类重写的方法。
如果一个类中,只有方法定义,没有方法具体实现,那么该方法称为抽象方法。而拥有抽象方法的类叫做抽象类,用关键字abstract定义。抽象类不能直接实例化,如果要实例化抽象类,那么抽象类变量需要指向子类对象。
抽象类中 ,可以定义抽象方法,也可以定义具体方法。如果一个类继承抽象类,那么必须重写抽象类中定义的所有抽象方法。
抽象方法定义的意义在于使用父类变量指向子类对象时,可以对抽象方法进行调用。
总结:
1、使用父类类型的引用指向子类的对象。
2、该引用只能调用父类中定义的方法,不能调用子类中独有的方法。
3、如果子类中重写了父类中的方法,那么在调用该方法时,将会优先调用子类中的这个方法。
4、在多态中,子类可以调用父类中所以方法。
5、多态主要体现为重载和重写,相同的行为不同的实现方式。
6、多态主要应用为多态参数和多态集合。
7、如果一个方法中有父类作为参数类型,就意味着可以给该方法传递任何一个子类对象。
instanceof: a instanceof Dog 表示a变量指向的对象 是否指向Dog类型。(两者是否匹配,返回boolean类型)
接口:类和类抽象出属性和行为则为父类,只抽象出行为便是接口。
接口可以是一种行为的抽象。接口可以看做是抽象类的特例。抽象类中可以有抽象方法、具体方法。但是接口中只能有抽象方法。定义接口用 interface ,实现接口用 implements 。
接口中定义的方法都是抽象方法,修饰符为 public abstract。即使缺省,也是公共的抽象方法。
如果一个方法参数为接口类型,意味着可以传递该接口的任何实现对象。
接口中可以定义变量,其修饰符是public static final ——> 是公共的静态的常量。
接口可以继承接口。同时可以多继承接口。 一个类要实现一个接口,不但要实现该接口中定义的抽象方法,而且要实现该接口父接口中定义的抽象方法。
抽象类和接口的区别:
1、都不能直接实例化
2、抽象类中可以有抽象方法,也可以有具体方法。但是接口中只能有抽象方法。
3、抽象类中定义的变量是普通属性。但接口中定义的变量是公共的静态的常量
4、一个类只能继承一个抽象类,但可以实现多个接口。
5、一个类实现一个接口,可以不完成实现接口中定义的抽象方法,但这个类只能是抽象类。同样,一个类继承一个抽象类,也可以不实现抽象类中定义的抽象方法,这个类也需是抽象类。
一个类继承一个父类,由于子类对象包含一个完整的父类对象,所以可以继承父类中所有的方法和属性,包括私有方法和私有属性。但是私有方法和私有属性不能被子类直接访问,可以通过父类公有方法进行访问。
如果一个方法申明为private,那么该方法默认修饰符为final。也就是该方法不能被子类重写。
一个方法的参数如果是父类类型,表示调用该方法时,可以传递任何一个子类对象。一个方法的参数如果是接口类型,表示调用该方法时,可以传递任何实现类对象。
OO:面向对象
OOP:面向对象编程
OOA:面向对象分析
OOD:面向对象设计
package com.lovo.overTest;
public class Student {
public String name;
public int age;
public String sex;
public Student(String name,int age,String sex){
this.name = name;
this.age = age;
this.sex = sex;
}
public String toString(){
return this.name+" "+this.age+" "+this.sex;
}
@Override
public boolean equals(Object obj){
Student s = (Student)obj;
return this.age == s.age&&this.name == s.name; //重写equals方法
}
}
package com.lovo.overTest;
public class Mytest {
public static void main(String[] args) {
Student s1 = new Student("张三",20,"男");
Student s2 = new Student("张三",20,"女");
System.out.println(s1==s2); //地址不等
System.out.println(s1.equals(s2)); //重写了equals方法,取出两者的年龄进行比较
String s = new String("dd");
String s3 = new String("dd");
System.out.println(s.equals(s3)); //重写了String方法
}
}
0 0
- 面向对象的特征
- 面向对象的特征
- 面向对象的特征
- 面向对象的特征
- 面向对象的特征
- 面向对象的特征
- 面向对象的特征
- 面向对象的特征
- 面向对象的特征
- 面向对象的特征
- 面向对象的特征
- 面向对象的特征
- 面向对象的特征
- 面向对象的特征
- Java面向对象特征
- 面向对象的特征
- 面向对象的特征
- 面向对象的特征
- Xamarin.Android编译提示找不到mscorlib.dll.so文件
- 上下文切换(Context Switch)
- OI小记
- struts2学习笔记(接收参数——域模型、DTO)
- 在ubantu14下搭建lamp的再次记录
- 面向对象特征
- Android UI设计——ViewPager中设置底部显示圆点焦点
- 第三周项目2-建设“顺序表”算法库
- 《Clean Code》代码的整洁之道(一)
- AS2.2打包:release-stripped.ap_' specified for property 'resourceFile' does not exist
- 【项目3-并联电阻】 第四周
- android长按弹出对话框
- Hibernate学习(3)------ Hibernate的映射文件
- 第四周项目1星号拼字母