DAY-1 java基础-java面向对象
2014-08-16 19:24
260 查看
java中万事万物皆对象 面向对象的三大特性: 封装、继承、多态
类可以看成一类对象的模板,对象可以看成类的具体实例
设计类时合适的方法应该出现在合适类中
面向对象的程序设计中实际上进行的是创建新的数据类型,但事实上所有的面向对象程序设计语言中都是使用class这个关键字来表示数据类型
打个比方:
所有的类描述了具有相同特性(属性)和行为(方法)的对象集合,而浮点数数字也是同样具有相同的特性和行为的集合,二者的差异在于,类是通过程序员定义来
处理问题,而不是用来表示机器中的存储单元的数据类型 所以类其实也是一个数据类型。
Java用三个关键字在类的内部设定边界 public private protected 访问级别如下表格
(1)java不支持多重继承,也就是说子类至多只能有一个父类
(2)子类继承了其父类中不是私有的成员变量和成员方法,作为自己的成员变量和方法
(3)子类中定义的成员变量和父类中定义的成员变量相同时,则父类中的成员变量不能被继承
(4)子类中定义的成员方法,并且这个成员方法的名字,返回类型,及参数个数和类型与父类的某个成员方法完全相同,则父类的成员方法不能被继承。
(5)继承关系是传递的。若类C继承类B,类B继承类A(多继承),则类C既有从类B那里继承下来的属性与方法,也有从类A那里继承下来的属性与方法,还可以有自己新定义的属性和方法。
父类:
子类:
* 2、初始化子类的静态初始化块
* 3、父类的初始化快
* 4、父类的构造器
* 5、子类的初始化块
* 6、子类的构造器
另外需要记住一点
父类的方法 访问的是父类的属性 子类的方法 访问的是子类的属性
上面的代码中 子类父类都有Name属性 和showName 方法 如果new Teacheer().showName(); 如果调用的是子类的ShowName 方面 打印的是 teacher 如果屏蔽掉子类中的showName 方法 打印出来的是person了
未完待续~~~
对象和类之间的关系
类是众多对象的一个抽象描述,类中定义了一类对象所具有的静态(属性)和动态属性(方法)类可以看成一类对象的模板,对象可以看成类的具体实例
设计类时合适的方法应该出现在合适类中
面向对象的程序设计中实际上进行的是创建新的数据类型,但事实上所有的面向对象程序设计语言中都是使用class这个关键字来表示数据类型
打个比方:
所有的类描述了具有相同特性(属性)和行为(方法)的对象集合,而浮点数数字也是同样具有相同的特性和行为的集合,二者的差异在于,类是通过程序员定义来
处理问题,而不是用来表示机器中的存储单元的数据类型 所以类其实也是一个数据类型。
类和类之间的关系
关联关系、实现关系、聚合 、组合Java用三个关键字在类的内部设定边界 public private protected 访问级别如下表格
类内部 | package内 | 子类 | 其他 | |
public | 允许 | 允许 | 允许 | 允许 |
protected | 允许 | 允许 | 允许 | 不允许 |
default | 允许 | 允许 | 不允许 | 不允许 |
private | 允许 | 不允许 | 不允许 | 不允许 |
继承
类的继承知识点(1)java不支持多重继承,也就是说子类至多只能有一个父类
(2)子类继承了其父类中不是私有的成员变量和成员方法,作为自己的成员变量和方法
(3)子类中定义的成员变量和父类中定义的成员变量相同时,则父类中的成员变量不能被继承
(4)子类中定义的成员方法,并且这个成员方法的名字,返回类型,及参数个数和类型与父类的某个成员方法完全相同,则父类的成员方法不能被继承。
(5)继承关系是传递的。若类C继承类B,类B继承类A(多继承),则类C既有从类B那里继承下来的属性与方法,也有从类A那里继承下来的属性与方法,还可以有自己新定义的属性和方法。
多态
父类的引用类型指向子类的对象父类:
public class Person { private String name="person"; int age; String sex; { System.out.println("person 初始化快 name:"+name); } static{ System.out.println("person 静态初始化快"); } public Person(int i) { System.out.println("person++"); } public void ShowName(){ System.out.println("person>>>"+name); } }
子类:
public class Teacher extends Person { private String name = "teacher"; private static int age = 0; { System.out.println(name+">>>>teacher"); System.out.println("Teacher 初始化块"); } static { age = 1; System.out.println("Teacher static初始化块"); } public Teacher() { // super(0); this(1); System.out.println("teacher"); } public Teacher(int age) { super(0); this.age = super.age; this.age = age; System.out.println("teacher1"); } private int dep; public void setDep(int dep) { this.dep = dep; } public int getDep() { return dep; } // public void ShowName(){ // System.out.println("teacher'name is "+name); // } public static void main(String[] args) { /** * 1、父类的静态初始化快 * 2、初始化子类的静态初始化块 * 3、父类的初始化快 * 4、父类的构造器 * 5、子类的初始化块 * 6、子类的构造器 * * 父类的方法 访问的是父类的属性 子类的方法 访问的是子类的属性 */ Person p = new Teacher(); p.ShowName(); // p. // p=new Person(); // p.ShowName(); // Teacher T = new Teacher(); // T.name=""; } }
子类父类的初始化顺序:
* 1、父类的静态初始化快* 2、初始化子类的静态初始化块
* 3、父类的初始化快
* 4、父类的构造器
* 5、子类的初始化块
* 6、子类的构造器
另外需要记住一点
父类的方法 访问的是父类的属性 子类的方法 访问的是子类的属性
上面的代码中 子类父类都有Name属性 和showName 方法 如果new Teacheer().showName(); 如果调用的是子类的ShowName 方面 打印的是 teacher 如果屏蔽掉子类中的showName 方法 打印出来的是person了
未完待续~~~
相关文章推荐
- [零基础学JAVA]Java SE面向对象部分-07.面向对象基础(02)
- 第三讲 Java的面向对象特征(继续基础部分......)
- [零基础学JAVA]Java SE面向对象部分-12.面向对象基础(07) 推荐
- 《跟我学Java 26日通》第6天面向对象基础(1)
- 传智播客_张孝祥_Java基础4_面向对象下_学习笔记
- 第二天----Java基础---面向对象上
- [零基础学JAVA]Java SE面向对象部分-19.面向对象高级(07) 推荐
- 《跟我学Java 26日通》第6天面向对象基础(1)
- [零基础学JAVA]Java SE面向对象部分-21.包及访问权限 推荐
- 传智播客_张孝祥_Java基础3_面向对象上_学习笔记
- [零基础学JAVA]Java SE面向对象部分-10.面向对象基础(05)
- [零基础学JAVA]Java SE面向对象部分-18.面向对象高级(06) 推荐
- [零基础学JAVA]Java SE面向对象部分-15.面向对象高级(03) 推荐
- 初学Java---面向对象基础1
- 理解Java面向对象的程序设计思想-Java基础-Java-编程开发
- [零基础学JAVA]Java SE面向对象部分-11.面向对象基础(06) 推荐
- [零基础学JAVA]Java SE面向对象部分-14.面向对象高级(02) 推荐
- [零基础学JAVA]Java SE面向对象部分-17.面向对象高级(05) 推荐
- Java 面向对象程序设计的基础知识
- Java面向对象基础2