Java面向对象之继承、构造方法、重写、重载
构造方法
类的构造方法是特殊的方法,此方法名称必须和类名一致,构造不能有返回值 不使用void,不能直接调用,在类对象实例化时自动调用,new 的时候可以调用。一般构造方法用于类对象实例化时的初始化。如果一个类没有编写构造方法,系统自动给此类编译时添加一个无参构造方法。如果声明类编写了构造方法,系统不再添加无参构造方法,建议编写完构造方法时,最好编写一个无参构造方法。
无参构造
说白了就是没有参数的构造方法
概念看不懂举个例子就清晰了。
声明一个类A
public class A { }
在类A中创建一个构造方法A(),并且打印出一句话
构造方法必须和类名一样
public class A { public A(){ System.out.println("构造方法A()"); } }
新建一个测试类,并在类中nuw一个A类的对象
public class Test { public static void main(String[] args) { A a = new A(); } }
执行main方法试试看
构造方法相当于在new对象是自动使用的方法
有参构造
有参构造就是有参数的构造方法
在类A中声明一个有参数的构造方法,传入两个String类型的参数,a和b
public class A { public A() { } public A(String a, String b) { System.out.println(a + b); } }
在测试类中new一个对象a时传入参数
public class Test { public static void main(String[] args) { A a = new A("aaa", "bbb"); } }
执行main方法
注意
没有构造方法的时候,类中隐藏了一个无参构造。但是创建一个有参构造,隐藏的无参构造就会消失。那么以后new对象就只能带参数了。所以在建有参构造时一定要创建一个无参构造方法放那。
类的继承
java语言中,类class 是单继承,多实现接口。接口interface 是多继承的。
为什么要继承呢?因为子类想要在父类的基础上添加新功能。
子类继承父类可以继承父类中的方法和属性
下面举例分析:
父类是人,子类是老司机。
人的特征有:两只手,两只眼,两只脚,会吃会喝
老司机继承了人类的特征,并且多出了自己会开车这个功能。
代码如下:
这是一个人 类,具有以下属性和功能。
public class Ren { public final String shou = "两只手"; public final String jiao = "两只脚"; public final String yan = "两只眼"; public void chi() { System.out.println("会吃"); } public void he() { System.out.println("会喝"); } }
这是老司机类,继承了人类。并且多了个会开车的功能
public class Siji extends Ren { public void kai() { System.out.println("会开车"); } }
测试:创建老司机对象输出属性并调用方法。
public class Test { public static void main(String[] args) { Siji b = new Siji(); System.out.println(b.jiao); System.out.println(b.shou); System.out.println(b.yan); b.chi(); b.he(); b.kai(); } }
方法重写、重载
重写 覆盖:方法名,返回类型,形参都一样。有此种情况的,必须为继承关系。
重载:方法名一样,返回类型,形参个数,类型不样的方法,不一定必须是继承关系,同一个类中都可以,比如 构造方法重载
重写
因为子类不满意父类的方法所以想把它改一下,这就是子类重写父类的方法。
比如人会吃会喝,但是老司机不喜欢它会吃这个功能,想把它改一下,改成会吃屎。
代码如下:
老司机重写人类的chi()方法
方法名一定要一样
public class Siji extends Ren { public void kai() { System.out.println("会开车"); } public void chi() { System.out.println("会吃屎"); } }
现在重写运行测试类
重载
有参构造和无参构造就是方法重载,一个类中有两个名字一样的方法,但是他们的返回值类型和参数类型,参数个数不一样。
两个方法的返回值类型和参数类型,参数个数,只要有一个不一样。但是他们方法名一样,那么两个方法就重载。
到此这篇关于Java面向对象之继承、构造方法、重写、重载的文章就介绍到这了,更多相关Java面向对象内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
IDEA 2020.1 for Mac 下载安装配置及出现的问题小结
这篇文章主要介绍了IDEA 2020.1 for Mac 下载安装配置及出现的问题小结,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2021-03-03Spring Boot应用中如何动态指定数据库实现不同用户不同数据库的问题
让我们创建一个 Spring Boot 项目首先设置一个具有必要依赖项的新 Spring Boot项目,在项目配置中包括 Spring Web、Spring Data JPA 和关于数据库的依赖项,接下来介绍Spring Boot应用中如何动态指定数据库,实现不同用户不同数据库的场景 ,需要的朋友可以参考下2024-04-04使用spring security明文密码校验时报错-BadCredentialsException:&nbs
小编遇到这样一个问题在学习spring security时使用明文密码进行登录校验时报错"org.springframework.security.authentication.BadCredentialsException: Bad credentials,今天给大家分享问题原因及解决方案,感兴趣的朋友一起看看吧2023-10-10解决java.net.SocketTimeoutException: Read timed out的问题
这篇文章主要介绍了解决java.net.SocketTimeoutException: Read timed out的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-06-06Java参数校验中validation和validator的区别详解
这篇文章主要介绍了Java参数校验中validation和validator的区别详解,一般对于复杂的业务参数校验,可以通过校验类单独的校验方法进行处理,通常对于一些与业务无关简单的参数校验可以采用validation和 validator通过注解的方式实现校验,需要的朋友可以参考下2023-10-10
最新评论