首页 > 编程知识 正文

java子类继承父类实例,java书

时间:2023-05-03 14:50:09 阅读:154066 作者:1846

Java继承一、继承的概念1 .概念2、简单的继承案例代码1 .格式2 .简单的继承关系3、详细的继承知识整理1 .继承的三种2 .继承的特性3 .继承的关键词`4.改写`5.构建方法6 .父子类间成员

一、继承的概念1 .概念继承是java面向对象编程技术的基础。 这是因为可以创建分层类。 继承是指子类继承父类的特性和行为,从而导致子类的对象(实例)具有父类的实例域和方法,或者子类从父类继承方法,从而导致子类继承父类继承可以理解为,对于已经使用的类,尽量不修改。 建议您定义新类,以便可以重用公共内容,并在新类中添加或更改所需的信息。

子类具有父类的一般特性和独特特性

父类也称为基类、超类

子类为派生类2,简单继承案例代码1.class父类{}class子类extends父类{} 2.也称为简单继承关系

(1)案例分析

讲师、fkdbb都是教师,提取讲师和fkdbb共享的信息作为教师的班级。 讲师班、fkdbb班继承教师班,作为副班。

(2)编码实现

//提取讲师和fkdbb共享的信息,提取教师的父级class Teacher { String name; String sex; //创建讲师班,继承教师班,专有行为(方法)讲义classlecturerextendsteacher (public void lecture ) ) ({ System.out.println )讲师讲义) 创建fkdbb类,继承教师类,专有行为(方法)辅导classassistantextendsteacher (public void coach ) ) system.out.println ) ) fkdbb

2.java语言可以多重继承

3 .一个子类只能有一个父类,但一个父类可以有多个子类

2 .继承的特性(1)子类可以具有父类的非私有属性和方法

(2)子类可以具有自己的属性和方法。 这意味着子类可以扩展父类

(3)子类可以用自己的方法实现父类的方法(重写Override )。

(4)Java的继承为单一继承,但可以多重继承。 这是Java继承区别于c继承的特性。

提高(5)类之间的耦合性(继承的缺点,耦合度高会加强代码之间的联系,降低代码的独立性)。

3 .继承的关键词(1)extends关键字

在Java中,类的继承是单个继承。 这意味着extends只能继承一个类,因为子类只能有一个父类。

java.lang.Object类是所有类的最高公共父类,如果该类没有继承的关键字,则缺省情况下将继承Object类

公共类人员{ string name }; String sex; public void eat { } public void sleep { } { } publicclasstudentextendsperson {//子类不写代码,但具有父类的所有非私有属性和梅

implements关键字允许java具有多继承特性。 如果使用范围是类继承接口,则可以同时继承多个接口。 接口和接口之间请用逗号隔开。

公共接口a {公共void aa (; 公共语音bb (; }公共接口b {公共void aa (; } public class C implements A,B {} (2)implements关键字

使用super关键字提供对引用当前对象的父类的父类成员的访问。

class A{ int a; public void a { } { } classbextendsa { inta; public void a { } public void test { } { this.a=11; //调用自己的成员变量super.a=22调用父类的成员变量this.a (); //调用自己的成员方法的super.a (; //调

用父类的成员方法 }}

(4)final关键字

final 关键字声明类可以把类定义为不能继承的,即最终类。

final class 类名{}

final 关键字修饰方法,该方法不能被子类重写.

权限修饰符 final 返回值类型 方法名(){} 4.重写(override)

重写:override(覆盖、覆写)

在继承中,子类与父类的方法名称一样,参数列表也一样,但是方法体不同,称为方法的重写。

class Fu { public void method(){ System.out.println("这是父类方法"); }}public class gydll extends Fu { //Override注解可以检测重写方法是否符合规范,可以不写但是不推荐 @Override public void method(){ System.out.println("这是子类方法"); }} 5.构造方法

1.子类构造方法中默认带有 super()调用父类构造方法,所以一定要先调用父类构造方法,后执行子类构造方法
2.可以通过super关键字在子类调用父类的重载构造
3.父类构造方法的调用必须是子类构造方法的第一条语句,一个子类构造方法只能调用一个父类构造方法
4.只有子类构造方法才能调用父类构造方法

class ConstructorTest { public static void main(String[] args) { gydll z = new gydll(); }}//运行结果为:父类无参构造方法父类有参构造方法子类构造方法

父类、子类的代码 ↓ ↓ ↓

class Fu { public Fu(){ System.out.println("父类无参构造方法"); } public Fu(int num){ this();//使用this关键字调用其它构造方法 System.out.println("父类有参构造方法"); }class gydll extends Fu { public gydll(){ //super();可以不写,编译器默认包含,如果调用了其它构造方法,则默认super()失效 super(20); System.out.println("子类构造方法"); }}

【注意】

1.子类构造方法必须继承一个父类构造方法
2.出现了继承关系,编译器默认继承父类构造方法
3.子类默认构造方法和子类中的super()都为隐式(可以不使用super关键字调用)
4. 如果要调用父类其它构造方法则必须使用super关键字调用
5.如果想调用两个父类构造方法,则必须在父类另外一个构造方法中,使用this关键字调用其它构造方法

6.父子类间成员变量的访问 //定义父子类class Fu { int numFu = 10; int num = 100;//这是父子类重名变量}class gydll extends Fu{ int numgydll = 10;//这是父子类重名变量 int num = 200;}

知识点在注释

public class FieldTest { public static void main(String[] args) { //首先对子类父类创建对象,以供下文比较 Fu f = new Fu();//父类对象 gydll z = new gydll();//子类对象 //使用子类对象和父类对象,都可以输出父类的numFu System.out.println(f.numFu); System.out.println(z.numFu); //但是只能使用子类对象输出numgydll System.out.println(z.numgydll); //如果父子类存在同名变量时//等号左侧是哪个类,就会使用哪个类的成员变量,//如果找不到继续向上(父类)寻找System.out.println(f.num);//输出父类numSystem.out.println(z.num);//输出子类num //父类不会知道谁继承了它,但是子类一定知道继承了谁}} 7.父子类间成员方法的访问

子类方法的访问权限必须 大于等于 父类方法的权限修饰符
子类方法的返回值类型必须 小于等于 父类方法的返回值类型

class Fu { public void methodFu(){System.out.println("这是父类方法");} //这是父子类重名方法Object method(){System.out.println("这是父类重名方法");return null;}}class gydll extends Fu { public void methodgydll(){System.out.println("这是子类方法");} //这是父子类重名方法 @Overridepublic String method(){//子类的访问权限(public)大于父类的访问权限(default)//子类的返回值类型(String)小于父类的返回值类型(Object)String str = "这是子类重名方法";return null;}}

知识点在注释

public class MethodTest { public static void main(String[] args) { gydll z = new gydll();//创建子类对象 z.methodFu();//父类对象访问父类方法 z.methodgydll();//子类对象访问子类方法//使用子类对象访问父子类重名方法时//创建的对象是谁就优先使用谁,找不到就继续向上(父类)寻找 String str = z.method(); //使用的子类对象所以首先寻找子类中的 method() }}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。