前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Java多态总结,3大特征封装,继承,多态,继承属性 Java中private、protected、public和default的区别 android studio 单元测试: 单元测试 set

Java多态总结,3大特征封装,继承,多态,继承属性 Java中private、protected、public和default的区别 android studio 单元测试: 单元测试 set

作者头像
zhangjiqun
发布2024-12-16 13:11:02
发布2024-12-16 13:11:02
18700
代码可运行
举报
文章被收录于专栏:计算机工具计算机工具
运行总次数:0
代码可运行

继承属性

  • 子类拥有父类非 private 的属性、方法。
  • 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
  • 子类可以用自己的方式实现父类的方法。
  • Java 的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如 A 类继承 B 类,B 类继承 C 类,所以按照关系就是 C 类是 B 类的父类,B 类是 A 类的父类,这是 Java 继承区别于 C++ 继承的一个特性。
  • 提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系越紧密,代码独立性越差)。

对于继承,子类会默认调用父类的构造器,但是如果没有默认的父类构造器,子类必须要显示的指定父类的构造器,而且必须是在子类构造器中做的第一件事。

仍然允许子类的成员来访问它们。这个时候就需要使用到protected。

对于protected而言,它指明就类用户而言,他是private,但是对于任何继承与此类的子类而言或者其他任何位于同一个包的类而言,他却是可以访问的。

看下代码demo:

代码语言:javascript
代码运行次数:0
复制
class A {
    public String show(D obj) {
        return ("A and D");
    }

    public String show(A obj) {
        return ("A and A");
    }
}

class B extends A {
    public String show(B obj) {
        return ("B and B");
    }

    public String show(A obj) {
        return ("B and A");
    }
}

class C extends B {
}

class D extends B {
}

class E {
    public static void main(String[] args) {
        A a1 = new A();
        A a2 = new B();//这样只保留A中的show(D)和B中的show(A);a2只保留了与父类A同名的属性和方法。
        B b = new B();
        C c = new C();
        D d = new D();
        System.out.println(a1.show(b));   //①AA
        System.out.println(a1.show(c));   //②aa
        System.out.println(a1.show(d));   //③ad
        System.out.println(a2.show(b));   //④ba
        System.out.println(a2.show(c));   //⑤ba
        System.out.println(a2.show(d));  // ⑥ad
        System.out.println(b.show(b));    //⑦bb
        System.out.println(b.show(c));    //⑧bb
        System.out.println(b.show(d));    //⑨ad
    }
}

其实主要就是在这里:

1. A a1 = new A();

2. A a2 = new B();//这样只保留A中的show(D)和B中的show(A);a2只保留了与父类A同名的属性和方法。

3. B b = new B();

上面这三种形式其中主要就是2这种形式,a2只保留了与父类A同名的属性和方法。相当于把儿子的功能给父亲,这时候父亲只能接受儿子重写父亲的方法,也就是public String show(A obj)覆盖掉父亲的同名方法,儿子原来的public String show(B obj),由于父亲 没有,只能废掉。其他就是正常的的了。

Java中private、protected、public和default的区别

public:可以被所有其他类所访问

private:只能被自己访问和修改

protected:自身、子类及同一个包中类可以访问

default:同一包中的类可以访问,声明时没有加修饰符,认为是friendly。

protected举例:

代码语言:javascript
代码运行次数:0
复制
public class A {
    protected int a = 0;
    private int ceshia() {
        a++;
        return a;
    }
}
代码语言:javascript
代码运行次数:0
复制
public class B extends A {
    public int ceshia(){
        a++;
        return a;
    }

}

解释:B继承A ,B可以使用A中a变量;

android studio 单元测试:

java:

还是上面的AB,右键goto,创建一个Test:

代码语言:javascript
代码运行次数:0
复制
public class BTest {

    @Test
    public void ceshia() {
        B b=new B();
        int a= b.ceshia();
        System.out.println(a);
    }

}

点击左侧按钮就能运行了;

android 测试:

选择android:

单元测试 setup,tearDown
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-12-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 继承属性
    • Java中private、protected、public和default的区别
    • android studio 单元测试:
    • 单元测试 setup,tearDown
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档