对于java封装、继承、抽象类和接口的理解

本人java新人,正在学习中,如有错误请指正


一、封装:

封装就是把对象的信息和内部逻辑结构隐藏起来,相当于在一个物品外面建造一个房子,set与get方法就是这个房子的门,我们通过这个“门”访问这个“物品”。


//例如创建一个测试类

public class Test {

private int i; //用private修饰一个变量


//创建另一个含有main的类A继承Test类

public class A {
public static void main(String[] args) {
Test test = new Test();
test.i;       //i将会报错
}
}


由此可以看出,被private修饰的变量是无法被调用的。

那么,我们该怎么使用i这个变量呢?我们可以通过创建get、set方法实现

public class Test {
private int i;
public int getI() {return i;} //get输出属性
public void setI(int i) {this.i = i;}  //set传入参数
}


创建了这两个方法后我们可以这样使用

public class A {
public static void main(String[] args) {
Test test = new Test();
test.setI(3); //将3赋值给i
System.out.println(test.getI());//将i输出
}
}


通过get、set方法,成功实现了i的使用



二、继承:

继承就是子类继承父类的属性和方法,并且,子类可以衍生出其他的属性与方法,java使用单继承制。


//同样通过上面的例子,我们在Test类中定义一个show方法

public class Test {
private int i;
public int j=1;
public int getI() {return i;} //get输出属性
public void setI(int i) {this.i = i;}  //set传入参数
public void show(){
System.out.println(j);
}
}


再创建一个Inherit类继承Test类

public class Inherit extendsTest{}


接下来实例化Inherit

public class A {
public static void main(String[] args) {
Inherit inherit = new Inherit();
inherit.show();
}
}


运行结果为1,可以看到,Inherit类并没有show()方法,但是Inherit类实例化后的对象却可以调用show()方法 ,便是因为Inherit类继承了Test的方法,需要注意,在java中一个父类可以有多个子类,但一个子类只能有一个父类。


三、抽象类:

抽象类和抽象方法必须用abstract关键字修饰,抽象类不一定有抽象方法,但抽象方法一定在抽象类中,使用抽象类的好处在于可以对子类提供一种约束,子类必须实现抽象类所有的抽象方法。


我们将上面的Test类修改成抽象类,将show()方法修改成抽象方法

public abstract class Test {
private int i;
public int j=1;
public int getI() {return i;} //get输出属性
public void setI(int i) {this.i = i;}  //set传入参数
public abstract void show();
}


如果Inherit类依旧如下

public class Inherit extends Test{}

那么将会报错,因为当该类的父类为抽象方法时,则该类必须实现父类的所有抽象方法

更改后的代码如下

public class Inherit extends Test{
public void show() {
System.out.println(j);
}
}

四、接口:

接口是一种特殊的抽象类,使用interface修饰符修饰,我们创建一个USB接口,定义两个方法read()和write()

public interface USB {
public void read();
public void write();
}


需要注意,接口中的方法都是抽象方法,也就是说接口中的方法必须全部实现,我们创建一个Flash类实现USB接口

public class Flash implements USB{
public void read() {
System.out.println("读取USB数据");
}
public void write() {
System.out.println("向USB写入数据");
}
}


五、抽象类与接口的区别

1.抽象类可以有抽象方法,也可以有具体实现的方法,而接口所有方法都是抽象方法,可以看出,接口比抽象类更加抽象。

2.抽象类中成员变量可以是各种类型的,而接口中的变量都是public static final类型的。

3.一个类只能继承一个抽象类,而一个类却可以实现多个接口


--转载请注明出处

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值