java中的继承
一、继承概述
1、提高了代码复用性,简化了代码
2、让类与类之间产生了继承关系,才有了后面多态特性的存在
注意:千万不要为获取其他类的功能而建立继承关系,必须要类与类之间存在继承关系
3、子类不能拥有父类中被private后的成员
二、java的多层继承
java中不支持多继承只支持单继承,因为多继承存在安全隐患,当多个父类定义了相同的成员,子类对象不确定运行哪一个,但java保留了这种机制,并用另一个方式来实现
三、子父类中的成员变量
1、成员变量
2、函数
3、构造函数
变量:this代表当前对象的引用,this.变量 首先在本类中找所需的这个变量,如果没有再在父类中找
super用于访问当前对象的成员 super.变量 直接在父类中找所需的变量
当子类和父类中有一样的函数时,当子类对象调用该函数,运行的是子类中的函数,如同父类中的函数被覆盖了一样,这种情况就是继承的另一种特性:重写(覆盖)
注意:1、子类覆盖父类时,必须要保证子类权限大于父类,负责会编译出错。
2、静态函数只覆盖静态的
记住:
重载:只看同名的方法的参数列表
重写:与父类方法一模一样
四、继承中的构造函数
有了子父类之后构造函数的特点:在对子类对象进行初始化的时候,父类的构造方法也会运行,那是因为子类的构造函数默认第一行有一条隐式的语句 super();
//继承概述
/*class Mammal{
String name="张三";
String buru="哺乳";
}
class Person extends Mammal{
int age;
}
class student extends Person{
String name="李四";
void study(){
System.out.println("在学校学习");
System.out.println(this.name);
System.out.println(super.name);
}
}
class teacher extends Person{
void teach(){
System.out.println("在学校给学生上课");
}
}
public class a6_45 {
public static void main(String[]args){
student a=new student();
//a.name="张三";
//a.age=18;
//
a.study();
System.out.println(a.buru);
}
}
*/
/*
*
class Animal{
String Type;
void run(){
System.out.println("在跳舞");
}
void show(){
System.out.println("我是父类!");
}
void sleep(){
System.out.println("动物在睡觉");
}
}
class Cat extends Animal{
void show(String a){
System.out.println("猫在睡觉");
}
}
class Dog extends Animal{
void run(){
Type="小花花";
System.out.println(Type+"在边唱边跳");
}
}
class a6_45{
public static void main(String[]args){
Cat a=new Cat();
a.show("a");
Dog c=new Dog();
c.run();
}
}
*/
class fu{
String name;
fu(){
System.out.println("父类构造方法");
}
}
class zi extends fu{
zi(){
System.out.println("子类构造方法");
}
zi(String n){
this.name=n;
}
}
public class a6_45{
public static void main(String[]args){
zi a=new zi();
//System.out.println(a);
}
}