JAVA基础学习20180106-继承上
2018-01-07 10:26
316 查看
1.继承的概念
(1)一种类与类之间的关系
(2)使用已存在的类的定义作为基础建立新类
(3)新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性的继承父类
(4)满足“A is a B”的关系
2.继承的特点
(1)利于代码复用
(2)缩短开发周期
3.语法:
(1)使用extends实现继承
class Dog extends Animal{
//子类特有的属性和方法
}
(2)单一继承,只能有一个父类
4.继承后的初始化顺序
父类静态成员子类静态成员父类对象构造子类对象构造
5.super
(1)子类的构造过程中必须调用其父类的构造方法,默认调用无参的构造方法。
(2)如果子类构造方法中既没有显式标注,而父类又没有无参的构造方法,则编译出错。
(3)使用super调用父类指定构造方法,必须在子类的构造方法第一行。
6.super和this
this: 当前类对象的引用
访问当前类的成员方法
访问当前类的成员属性
访问当前类的构造方法
不能在静态方法中使用
super: 父类对象的引用
访问父类的成员方法
访问父类的成员属性
访问父类的构造方法
不能在静态方法中使用
构造方法调用时,super和this不能同时出现
7.方法重写和方法重载
方法重写:
(1)在满足继承关系的子类中
(2)方法名、参数个数、顺序、返回值与父类相同
(3)访问修饰符的限定范围大于等于父类方法
方法重载:
(1)在同一个类中
(2)方法名相同
(3)参数个数、顺序、类型不同
(4)返回值类型、访问修饰符任意
8.访问修饰符的访问范围和限定能力
9.代码案例
(1)一种类与类之间的关系
(2)使用已存在的类的定义作为基础建立新类
(3)新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性的继承父类
(4)满足“A is a B”的关系
2.继承的特点
(1)利于代码复用
(2)缩短开发周期
3.语法:
(1)使用extends实现继承
class Dog extends Animal{
//子类特有的属性和方法
}
(2)单一继承,只能有一个父类
4.继承后的初始化顺序
父类静态成员子类静态成员父类对象构造子类对象构造
5.super
(1)子类的构造过程中必须调用其父类的构造方法,默认调用无参的构造方法。
(2)如果子类构造方法中既没有显式标注,而父类又没有无参的构造方法,则编译出错。
(3)使用super调用父类指定构造方法,必须在子类的构造方法第一行。
6.super和this
this: 当前类对象的引用
访问当前类的成员方法
访问当前类的成员属性
访问当前类的构造方法
不能在静态方法中使用
super: 父类对象的引用
访问父类的成员方法
访问父类的成员属性
访问父类的构造方法
不能在静态方法中使用
构造方法调用时,super和this不能同时出现
7.方法重写和方法重载
方法重写:
(1)在满足继承关系的子类中
(2)方法名、参数个数、顺序、返回值与父类相同
(3)访问修饰符的限定范围大于等于父类方法
方法重载:
(1)在同一个类中
(2)方法名相同
(3)参数个数、顺序、类型不同
(4)返回值类型、访问修饰符任意
8.访问修饰符的访问范围和限定能力
9.代码案例
package com.immoc.animal; public class Animal { /*private:只允许在本类中进行访问 *public:允许在任意位置访问 *protected:允许在当前类、同包子类/非子类、跨包子类调用,跨包非子类不允许 *默认:允许在当前类、同包子类/非子类调用,跨包子类/非子类不允许调用 * */ private String name="妮妮";//昵称 protected int month=2;//月份 String species="动物";//品种 public int temp=15; public static int st2=23; private static int st1=22; static{ System.out.println("我是父类的静态代码块"); } { System.out.println("我是父类的构造代码块"); } //父类的构造不允许被继承、不允许被重写,但是会影响子类对象的实例化 public Animal(){ System.out.println("我是父类的无参构造方法"); } public Animal (String name,int month){ System.out.println("我是父类的带参构造方法"); } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getMonth() { return month; } public void setMonth(int month) { this.month = month; } public String getSpecies() { return species; } public void setSpecies(String species) { this.species = species; } //吃东西 public void eat(){ System.out.println(this.getName()+"在吃东西"); } public void eat(String name){ System.out.println(name+"在吃东西"); } } package com.immoc.animal; public class Cat extends Animal{ private double weight=11.24;//体重 // public int temp=300; public static int st3=44; static{ System.out.println("我是子类的静态代码块"); } { System.out.println("我是子类的构造代码块"); } public Cat(){ // Animal temp=new Animal(); // temp.name; // this.temp=12; // this.month=23; // this.species=""; System.out.println("我是子类的无参构造方法"); } public Cat(String name,int month){ /* 子类构造默认调用父类无参构造方法 * 可以通过super()调用父类允许被访问的其他构造方法 * super()必须放在子类构造方法有效代码第一行 * */ super(name, month); // this(); System.out.println("我是子类的带参构造方法"); } public static void say(){ // this.weight=20; // super.name="aa"; } public double getWeight() { return weight; } public void setWeight(double weight) { this.weight = weight; } //跑动的方法 public void run(){ eat(); System.out.println(this.getName()+"是一只"+this.getSpecies()+",它在快乐的奔跑"); } } package com.immoc.animal; public class Dog extends Animal { private String sex;//性别 public Dog(){ } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } //睡觉的方法 public void sleep(){ super.eat();//调用的哪个eat(); super.species="犬科"; System.out.println(this.getName()+"现在"+this.getMonth()+"个月大,它正在睡觉~~"); } /* * 方法重载: * 1、在同一个类中 * 2、方法名相同,参数列表不通(参数的顺序、个数、类型) * 3、方法返回值、访问修饰符任意 * 4、与方法的参数名无关 * * 方法重写 * 1、有继承关系的子类中 * 2、方法名相同,参数列表相同(参数顺序、个数、类型),方法返回值相同 * 3、访问修饰符,访问范围需要大于等于父类的访问范围 * 4、与方法的参数名无关 * */ // private String sleep(String name){ // return ""; // } // public void sleep(String name,int month){ // // } // public void sleep(int month,String name){ // // } // public void sleep(int name,String month){ // // } //子类重写父类吃东西的方法 public void eat(){ System.out.println(this.getName()+"最近没有食欲~~"); } public void eat(String month){ System.out.println(month+"最近没有食欲~~"); } } package com.imooc.test; import com.immoc.animal.Animal; import com.immoc.animal.Cat; import com.immoc.animal.Dog; public class Test { public static void main(String[] args){ // Cat one=new Cat(); // one.setName("花花"); // one.setSpecies("中华田园猫"); // one.eat(); // one.run(); // System.out.println(one.temp); // System.out.println("=========================="); Dog two=new Dog(); two.setName("妞妞"); two.setMonth(1); // two.eat(); two.sleep(); // System.out.println("=========================="); // two.eat("凡凡"); // System.out.println("=========================="); // Animal three=new Animal(); // three.month=2; // three.species=""; // three.name; // three.run(); // three.sleep(); } } package com.imooc.test; import com.immoc.animal.Cat; public class TestTwo { public static void main(String[] args){ // Cat one=new Cat(); Cat one=new Cat("花花",2); System.out.println(one.temp); } }
相关文章推荐
- 黑马程序员 JAVA学习笔记——java基础 继承
- 黑马程序员 JAVA基础学习日记五——封装 继承 多态
- java基础学习之(一):继承
- Java基础学习第八天——类的继承与初始化
- JAVA基础知识再学习(3)继承概论 & 子类实例化过程
- java 从零开始,学习笔记之基础入门<重载_覆盖_继承>(十)
- Java 基础知识学习笔记——继承相关内容
- Java基础学习笔记七 Java基础语法之继承和抽象类
- 黑马程序员--Java基础学习笔记【继承、多态】
- java基础学习总结——类与继承
- 【安卓学习笔记】JAVA基础Lesson7-继承
- C\C++ 程序员从零开始学习Android - 个人学习笔记(八) - java基础 - 继承、抽象类、接口、内部类(待续)
- java基础学习面向对象之继承 五-7
- Java学习之旅基础知识篇:面向对象之封装、继承及多态
- 黑马程序员-----java基础六(继承与多态学习)
- 黑马程序员 JAVA基础学习笔记 继承等
- JAVA基础学习---- 继承与合成
- 黑马程序员—4—Java基础: 面向对象继承学习笔记和学习心得体会
- 【幻化万千戏红尘】qianfengDay08-java基础学习:修饰符、重写、继承、抽象、递归、final
- 黑马程序员——java基础学习(面向对象,继承)