java构造器的继承,java16:构造器 继承

本文详细解析Java中构造器的使用原则,包括默认构造器的生成条件、构造器的继承特性以及子类如何调用父类构造器等内容。同时介绍了方法重写的基本概念和应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

默认构造器

类中一定有构造器

如果类没有声明构造器,java编译器提供默认构造器

如果类中声明了构造器,java不在提供默认构造器

java 根据 参数 去找 对应构造器package day16;

public class Demo01 {

public static void main(String[] args) {

dog wangcai = new dog();// 调用 java默认给dog 分的构造器

// cat tom2= new cat(); //编译错误,没有构造器cat()

cat tom = new cat("tom");// 只有构造器cat(String),因为自己手动创建了构造器

}

}

class dog {

}

class cat {

public cat(String name) {

System.out.println(name);

}

}

继承:

子类型 父类型

子类型 继承父类型的属性和方法

子类型是多找多样的。

父类型定义的变量可以引用子类型实例

多态:

多种多样

向上造型:

继承时候的构造器

类一定有构造器

构造器不能被继承

子类的构造器中一定调用父类的构造器

子类默认调用父类无参数构造器

可以使用super()调用在子类构造器中父类构造器

super() 调用父类的无参构造器。不管你添不添加都有,父类中没有无参数构造器,就要在子类中使用spuer(参数),不然就会有编译错误

只能在子类构造器中使用

只能在子类构造器的第一行

package day16;

public class Demo02 {

public static void main(String[] args) {

new s();//main开始执行 使用 new 调用 s() 子类的构造器, 子类默认调用父类无参构造器执行输出f() 然后在执行下一步 回到 子类 输出s()

}()

}

class s extends f {

public s() {

//super();//你加或者不加 他都在这里。

System.out.println("s()");

}

}

class f {

public f() {

System.out.println("f()");

}

}

package day16;

public class Demo03 {

public static void main(String[] args) {

new s();

}

}

class s extends f {

public s() {

super(10);//需要明确的写出来

System.out.println("s()");

}

}

class f {

public f(int f) {

System.out.println("f()");

}

}

子类中定义与父类型同名属性:

java支持子类型和父类型定义同名属性

属性的访问是绑定到变量的类型

很少使用

方法的重写: 功能的修改

在子类中修改父类的行为,重写就是为了修改。

语法: 子类中定义与父类星泪相同的方法(方法名一样,参数一样)

调用时调用对戏那个的方法

重写也叫做覆盖

重写和 重载的区别: 他们两个就没有关系!!!!

重写:

子类型中修改 父类型的方法

在子类型中定义与父类型方法名和参数一样的方法

在调用时候 根据对象的类型 来调用相应的方法

重载:

方法名一样参数不同的方法 一般的功能相近的不同的方法

调用时候根据调用参数的类型来识别方法

package day17;

public class Demo04 {

public static void main(String[] args) {

F obj = new S();// 根据对象 调用重写的方法

A a = new A();

a.print(obj);// print F 根据参数 obj 的类型 F 去调用重载的方法。

}

}

class A {

public void print(F obj) {

System.out.println("print F");

obj.print();

}

public void print(S obj) {

System.out.println("print S");

obj.print();

}

}

class F {

public void print() {

System.out.println("F");

}

}

class S extends F {

public void print() {

System.out.println("S");

}

}

访问控制

体现了封装

private 私有的

原文:http://lmdtx.blog.51cto.com/6942028/1700050

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值