当前位置: 首页 > news >正文

保山企业网站建设网络网站建设公司排名

保山企业网站建设,网络网站建设公司排名,全球最大的购物网站,做外贸网站要注意什么目录 1.继承的概念 2.继承的语法 3.父类成员访问 3.1子类中访问父类成员变量 3.2子类中访问父类成员方法 4.super关键字 5.子类构造方法 6.继承方式 7.final关键字和类的关系 面向对象思想中提出了继承的概念,专门用来进行共性抽取,实现代码复…

目录

1.继承的概念

2.继承的语法

3.父类成员访问 

3.1子类中访问父类成员变量

3.2子类中访问父类成员方法

4.super关键字 

5.子类构造方法

6.继承方式

7.final关键字和类的关系


面向对象思想中提出了继承的概念,专门用来进行共性抽取,实现代码复用。就像是数学中,提取每一个数的公因数一般,把相同的代码提取出来,单独的成为一个类,但同时又可以被别的类使用其中的属性或方法。

1.继承的概念

继承(inheritance)机制:是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加新功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构, 体现了由简单到复杂的认知过程。继承主要解决的问题是:共性的抽取,实现代码复用

 Cat和Dog类,既有从父类Animal继承的语句,也含有本身的语句。

 

class Animal{//父类String name;int age;public void eat(){System.out.println(this.name + " is eating.");}
}class Cat extends Animal{ //Animal的子类public void miaow(){System.out.println("miaomiaomiao~");}
}class Dog extends Animal{  //Animal的子类public void bark(){System.out.println("wangwangwang~");}
}

2.继承的语法

修饰符 class 子类 extends 父类{……}

class Animal{//父类String name;int age;public void eat(){System.out.println(this.name + " is eating.");}
}class Cat extends Animal{//子类public void miaow(){System.out.println("miaomiaomiao~");}
}public class Test {public static void main(String[] args) {Cat cat = new Cat();System.out.println(cat.age);System.out.println(cat.name);}
}

我们可以看到,我们在main方法中,只实例化了cat对象,但是cat本身并没有定义任何成员变量,却发现可以调用成员变量age和name。而我们又使用了继承,由此可知对象cat当中的成员变量肯定来自于其父类Animal,同样的我们也可以同样的访问父类的方法。

通过上面的举例,我们值得注意的是:

  • 子类本身要有属于自身的语句,如果和父类相同则没必要创建一个新的类。
  • 子类会将父类的成员变量和方法继承到子类当中

3.父类成员访问 

3.1子类中访问父类成员变量

我们可以在子类中使用方法来访问父类的成员,使用this会先在子类中寻找成员,如果找不到则会进入父类寻找,所以在子类中this也可以访问父类成员

class Animal{//父类String name;int age;public void eat(){System.out.println(this.name + " is eating.");}
}class Cat extends Animal{  //Animal子类public void setName(String name){this.name = name;}public void miaow(){System.out.println("miaomiaomiao~");}
}

还有另一种情况,就是子类中成员名和父类的相同。

class Animal{//父类String name;    //注意1int age;public void eat(){System.out.println(this.name + " is eating.");}
}class Cat extends Animal{  //Animal子类String name;    //注意2public void setName(String name){this.name = name;}public void miaow(){System.out.println("miaomiaomiao~");}
}

此处,子类和父类的成员名都相同,那下面的setName方法中访问的是子类的成员还是父类的成员呢??

答案是:子类的。就像是C语言中局部变量和全局变量一样,如果变量名相同,给其赋值局部变量会优先与全局变量(类似就近原则?)在这里也是同样的道理

“成员名相同,访问父类成员变量的方法我们下面会有所提及”

于是,我们总结以下几点:

  • 如果访问的成员变量子类中有,优先访问自己的成员变量。
  • 如果访问的成员变量子类中无,则访问父类继承下来的,如果父类也没有定义,则编译报错。
  • 如果访问的成员变量与父类中成员变量同名,则优先访问自己的。 

3.2子类中访问父类成员方法

如果成员方法名不相同的情况:

和访问父类成员变量类似的,先在子类中寻找要访问的成员方法,如果有即可以访问。如果子类没有,下一步是进入到父类寻找要访问的成员方法。父类中访问不到相应的成员方法,则编译器会报错。子类的优先级是大于父类的

 成员方法名相同的情况:

class Base{public void methodA(){System.out.println("Base中的方法");}public void methodB(){System.out.println("Base中的方法");}
}class A extends Base{public void methodA(int a){System.out.println("A中的参数为int的methodA方法");}public void methodB(){System.out.println("A中的methodB方法");}
}
public class Test {public static void main(String[] args) {A a = new A();a.methodA();//没有参数,访问的是父类中的methodA方法a.methodA(5);//有参数,访问的是子类中的methodA方法a.methodB();//访问的是子类的方法,不可能访问到父类的方法//因为先在子类中访问再到父类}
}

 

 总结:

  • 通过子类对象访问父类与子类中不同名方法时,优先在子类中找,找到则访问,否则在父类中找,找到则访问,否则编译报错。
  • 通过派生类对象访问父类与子类同名方法时,如果父类和子类同名方法的参数列表不同(重载),根据调用方法适传递的参数选择合适的方法访问,如果没有则报错;

4.super关键字 

Java提供了super关键字,该关键字主要作用:在子类方法中访问父类的成员。

class Base{public void methodA(){System.out.println("Base中的方法");}public void methodB(){System.out.println("Base中的方法");}
}class A extends Base{public void methodA(int a){System.out.println("A中的参数为int的methodA方法");}public void methodB(){System.out.println("A中的methodB方法");super.methodB();//注意此处:用super关键字访问到了父类的成员方法}
}
public class Test {public static void main(String[] args) {A a = new A();a.methodA();//没有参数,访问的是父类中的methodA方法a.methodA(5);//有参数,访问的是子类中的methodA方法a.methodB();//访问的是子类的方法,不可能访问到父类的方法//因为先在子类中访问再到父类}
}

 注意事项:

  • 只能在非静态方法中使用
  • 在子类方法中,访问父类的成员变量和方法

5.子类构造方法

 因为父类和子类是继承关系,即子类会继承父类的成员变量除此还有自身额外的成员变量,在构建子类的构造方法的时候要先调用父类的构造方法。

class Base{public Base(){System.out.println("调用了父类的构造方法");}
}class A extends Base{public A(){super();//调用父类的构造方法  用户没有写的时候会默认自动添加System.out.println("调用了子类的构造方法");}}public class Test {public static void main(String[] args) {A a = new A();}
}

 注意:

  • 若父类显式定义无参或者默认的构造方法,在子类构造方法第一行默认有隐含的super()调用,即调用基类构造方法
  • 如果父类构造方法是带有参数的,此时需要用户为子类显式定义构造方法,并在子类构造方法中选择合适的父类构造方法调用,否则编译失败。
  • 在子类构造方法中,super(...)调用父类构造时,必须是子类构造函数中第一条语句。
  • super(...)只能在子类构造方法中出现一次,并且不能和this同时出现

6.继承方式

 java中的继承方式分为3种:

第一种:单继承

即一个类被另一个类继承

class A{……
}class B extends A{……
}

第二种:多层继承

即有一个类A,类B继承了A,类C继承了B

class A{……
}class B extends A{……
}class C extends B{……
}

第三种:不同类继承同一个类

即有一个类A,类B继承A,类C继承A

class A{……
}class B extends A{……
}class C extends A{……
}

7.final关键字和类的关系

当final修饰一个类的时候,这个被修饰的类不能被继承

 编译器会报错

http://www.15wanjia.com/news/183551.html

相关文章:

  • 品牌网站设计制作多少钱网站建设有哪些步骤
  • 济南 网站建设私家网站ip地址大全
  • 北京怎样做企业网站天津网站建设 企航互联
  • 做网站推广的前期条件广东免费建站公司
  • 网站建设策略阿里巴巴一个网站的制作特点
  • 网站seo诊断评分45php做简单网站例子
  • 常州制作网站软件特种设备企业服务平台
  • 建网站的公司做网站的功能是什么
  • 建网站要去备案南安市住房和城乡建设部网站
  • 模仿网站建设站建设app推广拉新
  • 网站建设和电子商务的关系佛山医疗网站建设
  • 网站别人帮做的要注意什么手续公众号文章模板免费
  • 花店网站设计南京网站建设cnee
  • 建筑模型设计网站建设网站后期维护工作包括哪些
  • 公司营销网站怎么做宿迁手机网站开发公司
  • 通化 网站建设在线教育网站建设策划
  • 广宗网站建设那个网站制作比较好
  • 网站内容和备案不一无代码开发小程序
  • 做最好的整站模板下载网站有什么可以做兼职的网站
  • 国内大的网站建设公司visual studio怎么创建网页
  • 网站备案通过后怎么办合肥装饰公司
  • 正版网站设计制作观澜专业做网站公司
  • 做网站模板的网页名称是m开头网站要服务器吗
  • 九易建网站的建站模板wordpress 打包
  • 做图客网站深圳平面设计培训
  • wordpress开发网站模板公司管理系统的好处
  • 自助下单网站怎么做做淘客网站用备案
  • 深圳服务网站入口宝山区网站建设
  • 网站建设会计科目网店美工需要做什么
  • google网站地图男女做的那些事情的网站