Java入门总结-----类的继承和接口

类的继承和接口
1.编写程序过程中,为什么要使用类的继承?
1)提高代码的重用性
2)提高程序的扩展性
举个例子: 你写了一个学生类,声明了名字、性别等属性以及学习等方法
public class Student{
private String name;
private String sex;
...
public void study(){...}
...
}
现在你要写一个大学生类,也包含了名字、性别等属性以及学习等方法,那么你就可以通过继承Student类来避免再次写重复的代码
public class UNStudent extends Student{
private String major;
public void play(){...}
}
而且,你可以在子类中定义父类没有的属性和方法,也就是提高了代码的扩展性

2.继承的语法格式
Java继承的关键字是:extends
格式:
public class 子类名 extends 父类名{}

3.子类继承父类后,子类从父类中继承到了那些属性和方法?又能调用那些属性和方法?
1)首先,子类继承父类后,子类是能继承到父类所有的方法和属性的。
2)那么,子类能调用父类所有的方法和属性吗?

(1)如果子类和父类在同一个包目录下:
只有声明为:private 的方法和属性是不能调用的
也就是说,能调用的有:public protected 以及默认的方法和属性

(2)如果子类和父类不在同一个包目录下:
能调用的方法和属性:public protected
不能调用的方法和属性:默认的 private
特别地,如果调用发生时,不是在子类中,而是在其他地方(比如主函数或其他类中),那么只有public的方法和属性才能调用。

4.方法的重写
1)程序编写过程中为什么要用到方法重写?
当子类继承了父类的某个方法,但这个方法在子类中又要与父类有不同的表现时(比如说,一个大学生类UNStudent继承了学生类Student的学习study()方法,但是大学生的学习方法又与一般的高中生、初中生不同),那么就需要用到方法的重写。

2)方法重写的条件:
(1)必须要有继承关系。也就是说方法的重写只会发生在继承了父类的子类中
(2)子类中重写的方法与父类中被重写的方法相比:返回值类型,方法名,参数列表(参数个数,参数类型,参数顺序)必须要完全一致。

3)方法重写的调用
1)必须是子类的对象
2)优先调用子类的方法,如果子类中没有重写,才会调用父类的方法。

5.自动转型
所谓自动转型就是指在继承关系中,所有的子类对象,自动的也都是父类类型。例如:某个具体的一个大学生,他除了是大学生,也可以被称之为学生;而一个学生,不一定是大学生,也可以是小学生或者中学生等等。大学生(子类对象)是学生(父类类型),反之则不成立。

使用自动转型,会遇到一个小问题:无法调用子类的方法(父类中没有的方法,也就是不是重写的方法)。这是由Java的编译机制引起的:在使用自动转型时,Java编译只会根据对象名的类型去检索对对应的方法名,因为父类中没有该方法,因而检索不到而报错!
解决办法: 在父类中定义一个空方法,使之成为重写就ok了。

自动转型的使用: 一般是作为方法的参数,如果参数的类型为父类类型,那么该方法就可以接受所有子类的对象参数。

6.多态
所谓多态,是指相同类型(比如子类自动转型成为父类类型)的对象调用相同的方法的时候,由于继承和重写的机制,得到不同的结果。

7.接口
定义接口的关键字是: interface
格式:
public interface 接口名 extends 接口名,...{
//定义常量
public static final 数据类型 常量名 = 值;
...
//定义抽象方法
public 返回值类型 方法名 (参数类型 参数名,...);
...
}

定义类实现接口,关键字:implements
实现格式:
public class 类名 implements 接口名,...{

//必须实现接口中所有的抽象方法

}

类个接口的区别:
1)关键字:类的定义关键字为 class,接口的关键字为 interface;
2)继承:类只能有一个继承父类,为单继承;接口可以继承多个接口,为多继承;
3)属性:类中可以定义各种属性,包括定义常量;接口只能定义常量属性;
4)方法:类中定义的方法必须实现;接口中只能定义抽象方法,必须不实现;
5)子类:父类的子类可以重写父类的方法,也可以不重写;继承了接口的类,必须重写实现接口的所有抽象方法;
6)对象:类可以实例化对象;接口不能实例化对象。

8.抽象类
定义的关键字:abstract class
格式:
public abstract class 抽象类名 extends 类名或抽象类名 implements 接口名,...{

// 和类一样定义属性和方法
// 和接口一样定义常量和抽象方法,格式稍有不同
public abstract 返回值类型 方法名(参数类型 参数名,...);

}
继承了抽象类的子类,如果父类定义了抽象方法,必须重写实现至少一个抽象类方法。
抽象类是介于类和接口之间的一个特殊类。
技术选型 【后端】:Java 【框架】:springboot 【前端】:vue 【JDK版本】:JDK1.8 【服务器】:tomcat7+ 【数据库】:mysql 5.7+ 项目包含前后台完整源码。 项目都经过严格调试,确保可以运行! 具体项目介绍可查看博主文章或私聊获取 助力学习实践,提升编程技能,快来获取这份宝贵的资源吧! 在当今快速发展的信息技术领域,技术选型是决定一个项目成功与否的重要因素之一。基于以下的技术栈,我们为您带来了一份完善且经过实践验证的项目资源,让您在学习和提升编程技能的道路上事半功倍。以下是该项目的技术选型和其组件的详细介绍。 在后端技术方面,我们选择了Java作为编程语言。Java以其稳健性、跨平台性和丰富的库支持,在企业级应用中处于领导地位。项目采用了流行的Spring Boot框架,这个框架以简化Java企业级开发而闻名。Spring Boot提供了简洁的配置方式、内置的嵌式服务器支持以及强大的生态系统,使开发者能够更高效地构建和部署应用。 前端技术方面,我们使用了Vue.js,这是一个用于构建用户界面的渐进式JavaScript框架。Vue以其易上手、灵活和性能出色而受到开发者的青睐,它的组件化开发思想也有助于提高代码的复用性和可维护性。 项目的编译和运行环境选择了JDK 1.8。尽管Java已经推出了更新的版本,但JDK 1.8依旧是一种成熟且稳定的选择,广泛应用于各项目中,确保了兼容性和稳定性。 在服务器方面,本项目部署在Tomcat 7+之上。Tomcat是Apache软件基金会下的一个开源Servlet容器,也是应用最为广泛的Java Web服务器之一。其稳定性和可靠的性能表现为Java Web应用提供了坚实的支持。 数据库方面,我们采用了MySQL 5.7+。MySQL是一种高效、可靠且使用广泛的关系型数据库管理系统,5.7版本在性能和功能上都有显著的提升。 值得一提的是,该项目包含了前后台的完整源码,并经过严格调试,确保可以顺利运行。通过项目的学习和实践,您将能更好地掌握从后端到前端的完整开发流程,提升自己的编程技能。欢迎考博主的详细文章或私信获取更多信息,利用这一宝贵资源来推进您的技术成长之路!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值