发表于: 2017-09-07 22:25:59
1 875
今天完成的事情:
1. 学习接口、继承
Java只支持单继承,一个类只能继承一个父类,但在实际中需要多继承来解决问题,因此Java提供了接口interface这个方法来实现多继承。接口的定义与类相似。
[修饰符] interface 接口名 [extends 父接口列表]{
[public][static][final] 变量;
[public][abstract] 方法;
}
2. 接口的特点
(1)接口中的变量默认都是public,static,final类型,接口中的成员变量都是常量。
(2)接口中的方法默认都是public,abstract,没有方法体,不能实例化。
3. 接口的实现
接口在定义后,就可以在类中实现该接口。在类中使用implements关键字,基本语法如下
[修饰符] class 类名 [extends 父类名] [implements 接口列表]
范例:图片的不同格式保存
(1)写ImageSaver接口
public interface ImageSaver {
void save();}
(2)创建GIFSaver类,该类实现ImageSaver接口
import java.util.*;
public class GIFSaver implements ImageSaver {
public String name;
public GIFSaver(String name) {
this.name=name;
}
//@Override
public void save() {
System.out.println("用户选择的是"+this.name+"格式"+"\t"+"将图片保存成"+this.name+"格式");
}
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
while(true) {
System.out.println("请输入想保存的格式");
String a=in.next();
GIFSaver p1=new GIFSaver(a);
p1.save();
System.out.println("继续吗? Y or N");
if(in.next().equals("N")) {
break;
}
}
in.close();
}}
(3)运行结果
请输入想保存的格式
png
用户选择的是png格式 将图片保存成png格式
继续吗? Y or N
Y
请输入想保存的格式
gif
用户选择的是gif格式 将图片保存成gif格式
继续吗? Y or N
4.类的继承
(1)在Java中,继承通过extends关键字实现,extends指明当前类是子类,通过extends关键字来显示地指明父类,基本的声明格式:
[修饰符] calss 子类名 extends 父类名{
类体
}
public class Bird {
String color="白色";
String skin="羽毛";
}
public class Pigeon extends Bird {
public static void main(String[] args){
Pigeon pigeon=new Pigeon();
System.out.println(pigeon.color);
}
}
(2)继承中的重写
重写是当子类继承父类中所有可能被子类访问的成员方法时,如果子类的方法名与父类的方法名相同,那么子类就不能继承父类的方法,此时称为子类的方法重写了父类的方法。重写体现了子类补充或者改变父类方法的能力,通过重写,可以使得一个方法在不同的子类中表现出不同的行为。
范例:
【1】创建一个Animal类
public class Animal {
public Animal(){
}
public void cry(){
System.out.println("动物发出叫声");
}
}
【2】创建狗类,猫类
public class Dog extends Animal {
public Dog(){
}
public void cry(){
System.out.println("狗发出“汪汪……”");
}
}
public class Cat extends Animal{
public Cat(){
}
public void cry(){
System.out.println("猫发出“喵喵……”");
}
}
【3】创建Zoo类,调用cry()
public class Zoo {
public static void main(String [] args){
Dog dog=new Dog();
dog.cry();
Cat cat=new Cat();
cat.cry();
}
}
狗发出“汪汪……”
猫发出“喵喵……”
从运行结果Dog类和Cat类对父类cry()方法的重写,所以执行的子类的cry()方法。
5.使用super关键字
子类可以继承非private修饰的成员变量和方法,如果子类中声明的成员变量与父类中的成员变量同名,则子类不能继承父类的成员变量,此时成子类的成员变量隐藏了父类的成员变量。如果子类中声明的成员方法与父类的成员方法同名,并且方法的返回值以及参数个数和类型也相同,则子类不能继承父类的方法,此时成成员方法重写了父类的成员方法。如果想在子类中访问父类中被子类隐藏的成员方法或变量,就可以使用super关键字。
(1)调用父类的构造方法
创建父类Beast
public class Beast {
String skin="";
public Beast(){
}
public Beast(String a){
skin=a;
}
public void move(){
System.out.println("跑");
}
}
(2)创建子类Tiger
public class Tiger extends Beast{
public Tiger(){
super("条纹");
}
public static void main(String [] args){
Tiger tiger=new Tiger();
tiger.move();
System.out.println(tiger.skin);
}
}
跑
条纹
明天的计划:
1.继续学习多态
2.复习前面所学的类和对象,加深对象的理解认识。
收获:
1.在学习接口和继承的同时也对之前学习的对象和类的有了更深的理解,刚开始接触类和对象的概念,需要多通过实例来加深理解。
2.在学习基础知识的时候遇到新的概念可以不用刻意的探究太深入,在接触后面的内容的同时对之前的学习也会有很好的帮助。
3.基础知识还是需要通过更多的代码案例来深入理解。
评论