首页 > 代码库 > java面向对象基础复习
java面向对象基础复习
对java基础的一个复习总结吧。
1、继承:通过使用关键字extends,子类可以继承父类所有的方法和属性,但是无法使用 private(私有) 的方法和属性,一次只能继承一个父类。
2、重写:重写(override)是子类对父类的允许访问的方法的实现过程进行重新编写!返回值和形参都不能改变。
3、重载:重载(overload) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。
4、多态:存在的三个条件
- 继承
- 重写
- 父类引用指向子类对象
5、抽象类:abstract class来定义抽象类。
6、抽象方法:如果一个类包含抽象方法,那么该类必须是抽象类。
7、封装:简单的说就是成员私有,通过set和get方法来获取。
8、接口:是抽象方法的集合,接口通常以interface来声明。
- 接口没有构造方法。
- 接口中所有的方法必须是抽象方法。
- 接口不能包含成员变量,除了static和final变量。
- 接口支持多重继承。
9、包(package):Java使用包(package)这种机制是为了防止命名冲突,访问控制,提供搜索和定位类
自己写了一段代码来使用以上的知识点。
父类:animals。这是一个抽象类,因为里面声明了抽象方法eat。对于成员变量name,使用了封装的思想,声明为私有,只能通过getName和setName访问。
还有一个move方法,用于给子类重写的。
子类:Cat。实现了eat,重写了move,重载了move,新增了自己的方法sleep。
子类:Dog。实现了eat,重写了move。
以上三个类放在animals包里面。
main.java:
import animals.*; public class main { public static void main(String args[]){ //父类指向子类引用(向上转型) animals cat = new Cat("cat"); animals dog = new Dog("Dog"); cat.eat(); dog.eat(); //重写(与父类不同) cat.move(); dog.move(); //cat.sleep();会报错,因为animals里面没有sleep //cat。move(5);会报错,因为animals里面没有重载move(int) if(cat instanceof Cat){//判断是不是Cat类的一个实例 Cat newCat = (Cat)cat;//向下转型 System.out.println(newCat.getName()); newCat.sleep(); newCat.move(5);//重载,有相同名字的函数,但是参数列表不同 } } }
animals.java
package animals; //只能有一个公有类 //有抽象函数,所以为抽象类 public abstract class animals{ private String name;//封装 //构造函数 animals(String name){ this.name = name; } //具体的方法,由子类实现,所以定义为抽象 public abstract void eat(); //同用的方法,用于重写 public void move(){ System.out.println("动物可以移动"); } //通用的方法,父类实现 public void setName(String name){ this.name = name; } public String getName(){ return name; } }
Cat.java
package animals; //猫 public class Cat extends animals{ //每个类都得有自己的构造函数 public Cat(String name) { super(name); } //因为继承了动物类,所以成员name,以及setName、getName.move都有的 //因为父类是抽象类,必须实现抽象方法 public void eat(){ System.out.println("猫吃鱼"); } //可以对父类存在的方法进行重写 public void move(){ //调用父类的同名函数 super.move(); System.out.println("猫可以跑!"); } //重载 public void move(int num){ move(); System.out.println("猫跑了"+num+"s"); } //新增的属于自己的方法 public void sleep(){ System.out.println("Slepping!"); } }
Dog.java
package animals; public class Dog extends animals{ //每个类都得有自己的构造函数 public Dog(String name) { super(name); } //因为继承了动物类,所以成员name,以及setName、getName.move都有的 //因为父类是抽象类,必须实现抽象方法 public void eat(){ System.out.println("狗吃啥?"); } //可以对父类存在的方法进行重写 public void move(){ //调用父类的同名函数 super.move(); System.out.println("狗也可以跑!"); } }
输出:
java面向对象基础复习
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。