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

北京 好的网站制作a站app

北京 好的网站制作,a站app,长沙工程有限公司,电脑网页版#x1f970;#x1f970;#x1f970;来都来了#xff0c;不妨点个关注叭#xff01; #x1f449;博客主页#xff1a;欢迎各位大佬!#x1f448; 文章目录 1. 继承1.1 继承是什么1.2 继承的意义1.3 继承的语法1.4 继承的方式1.5 子类中访问父类成员1.5.1 子类中访问… 来都来了不妨点个关注叭 博客主页欢迎各位大佬! 文章目录 1. 继承1.1 继承是什么1.2 继承的意义1.3 继承的语法1.4 继承的方式1.5 子类中访问父类成员1.5.1 子类中访问父类成员变量1.5.2 子类中访问父类成员方法 1.6 super关键字1.7 子类构造方法 2. super与this关键字3. final 关键字3.1 修饰变量或字段3.2 修饰类3.3 修饰方法 1. 继承 面向对象三大特性封装、继承、多态 今天我们一起来看看继承这一特性~~~ 1.1 继承是什么 Java中使用类对现实世界中实体来进行描述类实例化后的对象来表示现实中的实体but现实世界错综复杂事物之间可能会存在一些关联对于这些有关联的事物我们需要合理地设计程序。 比如狗和猫它们都是动物我们可以用Java来描述狗和猫的属性和方法如下 public class Dog {int legNumber;String name;String gender;int age;float weight;void eat() {System.out.println(name在吃饭);}void sleep() {System.out.println(name在睡觉);}void bark() {System.out.println(name汪汪叫);} }public class Cat {int legNumber;String name;String gender;int age;float weight;void eat() {System.out.println(name在吃饭);}void sleep() {System.out.println(name在睡觉);}void meow() {System.out.println(name喵喵叫);} }从上述代码中我们直观清晰看到狗和猫类中存在大量重复它们的属性都有腿的数量、名字、性别、年龄、体重和吃饭这个行为它们的叫声不同。显然这个代码存在大量重复是不合理的。 解决办法面向对象思想中提出了继承的概念专门用来进行共性抽取实现代码复用 【继承】 继承是面向对象最显著的一个特性继承是从已有的类(父类)中派生出新的类(子类)新的类能吸收已有类的数据属性和行为并能扩展新的能力。 在上述狗和猫的场景中我们将狗和猫的共性抽取它们都是动物很多属性都有共性我们将这些共性抽取出来而狗和猫又各自有属于自己的属性利用继承的思想达到代码共用的思想动物类则是父类狗和猫是子类子类可以复用父类中成员子类在实现时只需关心自己新增加的成员 1.2 继承的意义 继承有什么意义呢 【继承的意义】在于对共性抽取实现代码复用是多态性的基础子类能够更灵活地适应不同的需求提高代码的通用性和可扩展性并层次化分类使程序结构更易于管理。 1.3 继承的语法 在Java中表示类之间的继承关系需借助extends关键字具体语法如下 class 父类名称 { // 父类的属性和方法 } 修饰符 class 子类名称 extends 父类名称 { // 子类特有的属性和方法 // 子类可以覆盖父类的方法 } 通过上述的分析使用继承的思想重新设计各部分代码如下 public class Animal {int legNumber;String name;String gender;int age;float weight;void eat() {System.out.println(name在吃饭);}void sleep() {System.out.println(name在睡觉);} }public class Dog extends Animal{void bark() {System.out.println(name汪汪叫);} }public class Cat extends Animal {void meow() {System.out.println(name喵喵叫);} }public class Test {public static void main(String[] args) {Dog dog new Dog();Cat cat new Cat();dog.name 球球;cat.name 毛毛;dog.bark();cat.meow();} }【注意事项】 1一个.java文件写一个类如下写法 2Dog类和Cat并没有定义成员变量name是从父类Animal继承过来的eat()和sleep()方法也是继承来的即子类会将父类中的成员变量或者成员方法继承到子类中 3 子类继承父类后必须要新添加自己特有的成员体现出与基类的不同否则就没有必要继承完全可以直接用父类呀~所以必须要新添加自己特有的成员 1.4 继承的方式 在现实世界中事物之间的关系是十分复杂的~那Java支持哪些继承方式呢 Java支持单继承、多层继承、不同类继承同一类 不支持多继承(一个子类继承多个父类不支持) Java中不支持多继承 尽管在写代码时候我们可能会碰到类之间有非常复杂的关系但是仍然不希望类之间的继承关系超过三层 继承层次太多, 需要考虑对代码进行重构 如果想从语法上进行限制继承使用 final 关键字修饰类表示该类不可以被继承 1.5 子类中访问父类成员 1.5.1 子类中访问父类成员变量 【子类和父类不存在同名成员变量】 public class Parent {String a;String b; }public class Child extends Parent{String c;public void method() {a 我是父类的a;b 我是父类的b;c 我是子类特有的c;System.out.println(a);System.out.println(b);System.out.println(c);} }public class Test {public static void main(String[] args) {Child child new Child();child.method();} }运行结果如图 解释子类中没有a和b变量a、b访问从父类Parent类继承下来的a、b子类中有变量cc是访问子类自己的c 【子类和父类存在同名成员变量】 public class Parent {String a;String b;String c; }public class Child extends Parent{String a;char b;public void method() {a 我是子类Child类中的a;b b;c 我是父类Parent类中的c;System.out.println(a);System.out.println(b);System.out.println(c);} }public class Test {public static void main(String[] args) {Child child new Child();child.method();} }运行结果如图 解释子类中有变量a则访问的是自己的a而变量b在父类与子类中均有类型不同可以看到优先访问的是子类中的变量b子类中没有变量c则访问从父类继承下来的c 【总结】 通过子类对象或者在子类方法中访问成员时以下3种情况 (1) 访问的成员变量子类中有优先访问自己的成员变量 (2) 访问的成员变量子类中无则访问父类继承下来的如果父类也没有定义则编译报错 (3) 访问的成员变量与父类中成员变量同名则优先访问自己的 即成员变量访问遵循就近原则自己有则优先访问自己的否则在父类中寻找 1.5.2 子类中访问父类成员方法 【子类和父类不存在同名成员方法】 public class Parent {public void methodA() {System.out.print(父类Parent类中的methodA()方法);} }public class Child extends Parent{public void methodB() {System.out.print(子类Child类中的methodB()方法);}public void methodC() {methodA();methodB();} }public class Test {public static void main(String[] args) {Child child new Child();child.methodC();} }运行结果如图 解释子类中没有methodA()方法子类访问父类Parent类继承下来的methodA()方法methodB()方法是访问子类自己的methodB()方法 【子类和父类存在同名成员方法】 public class Child extends Parent{public void methodA(int a) {System.out.println(Child子类中的methodA(int)方法);}public void methodB() {System.out.println(子类Child类中的methodB()方法);}public void methodC() {methodA();methodA(12);methodB();} } public class Parent {public void methodA() {System.out.println(父类Parent类中的methodA()方法);}public void methodB() {System.out.println(父类Parent类中的methodB()方法);} }public class Test {public static void main(String[] args) {Child child new Child();child.methodC();} }运行结果如图 解释子类中的methodA()和父类中的methodA()构成重载根据调用方法调用哪个就是哪个methodA()未传参调用父类的methodA(12)传参了调用子类Child的methodA(12)方法。methodB同名调用子类自己的methodB()方法 【总结】 (1) 子类对象访问父类与子类中不同名方法时优先在子类中找找到则访问否则在父类中找找到则访问父类的否则编译报错 (2) 子类对象访问父类与子类同名方法时如果父类和子类同名方法的参数列表不同(重载)根据调用方法适传递的参数选择合适的方法访问如果参数列表一致优先在子类中找访问自己的 即成员方法访问遵循就近原则自己有则优先访问自己的否则在父类中寻找如果方法重载根据调用方法选择一致的 1.6 super关键字 我们知道如果子类自己有变量c那么优先访问子类的c如果我想访问父类的c该如何做捏 此时super关键字闪亮登场 Java提供super关键字该关键字主要作用就是在子类方法中访问父类的成员 public class Parent {String a 我是父类Parent类中的a;String b 我是父类Parent类中的b;String c;public void methodA() {System.out.println(我是父类Parent类中的methodA());} } public class Child extends Parent{String a 我是子类Child类中的a;char b;public void methodA() {System.out.println(我是子类Child类中的methodA());}public void method() {System.out.println(a);//a相当于this.aSystem.out.println(super.a);methodA();//methodA()相当于this.methodA()super.methodA();} }public class Test {public static void main(String[] args) {Child child new Child();child.method();} }运行结果如下 优先访问子类中的成员无法访问到父类中的成员通过关键字super可以访问到父类的成员变量和方法 【注意事项】 (1) 只能在非静态方法中使用 (2) 在子类方法中访问父类的成员变量和方法。 1.7 子类构造方法 父子即先有父再有子在子类构造方法内必须先帮助父类构造 在子类构造方法中虽然并没有写任何关于父类的构造的代码通过代码运行结果得知在构造子类对象时先执行父类的构造方法后执行子类的构造方法 public class Parent {public Parent() {System.out.println(父类Parent构造方法);} } public class Child extends Parent{public Child() { //super(); 被隐藏了 //子类构造方法中默认会调用父类的无参构造方法super() //没有写时,编译器会自动添加,且super()必须是子类构造方法中第一条语句 //且只能出现一次System.out.println(子类Child构造方法);} }public class Test {public static void main(String[] args) {Child child new Child();} }运行结果如下 【原因】子类对象中成员由两部分组成父类继承下来的子类新增加的部分先有父再有子所以在构造子类对象时候 先要调用父类的构造方法将从父类继承下来的成员构造完整再调用子类自己的构造方法将子类自己新增加的成员初始化完整 【注意事项】 (1) 父类显式定义无参或者默认的构造方法在子类构造方法第一行默认有隐含的super()调用即调用父类构造方法 public Parent() { }public Child() {super(); }(2) 父类构造方法是带有参数的此时需要为子类显式定义构造方法并在子类构造方法中选择合适的父类构造方法调用否则编译失败即子类必须先帮助父类构造 public class Parent {String name;int age;public Parent(String name, int age) {this.name name;this.age age;} } public class Child extends Parent{int index;public Child(String name, int age,int index) {super(name,age); //必须先帮助父类构造且super为第一条语句,交换顺序则会报错,且super只出现一次this.index index;} }(3) 在子类构造方法中super(…)调用父类构造时必须是子类构造函数中第一条语句且只能出现一次并且不能和this同时出现即this和super调用构造器不能同时出现 public class Child extends Parent{int index;public Child(String name, int age,int index) {super(name,age);this(1,2,4);//将会报错不能同时出现} }2. super与this关键字 【相同点】 (1) 均为Java中的关键字 (2) 均只能在类的非静态方法中使用用来访问非静态成员方法和变量 (3) 在构造方法中调用时必须是构造方法中的第一条语句并且不能同时存在 【不同点】 (1) this是当前对象的引用当前对象即调用实例方法的对象super是子类对象中从父类继承下来部分成 员的引用 (2) 在非静态成员方法中this访问本类的方法和属性super访问父类继承下来的方法和属性 (3) 在构造方法中this(…)调用本类构造方法super(…)调用父类构造方法两种调用不能同时在构造方法中出现 (4) 构造方法中一定会存在super(…)的调用用户没有写编译器也会增加但是this(…)用户不写则没有 3. final 关键字 final关键字可以用来修饰变量、成员方法以及类 3.1 修饰变量或字段 表示该变量不能被修改(即常量) final int a 100; a 20; //编译出错,变量a被final修饰,不能被修改3.2 修饰类 表示该类不能被继承 final public class Animal {... }public class Cat extends Animal{... } //编译出错,Animal类被final关键字修饰,表示不能被继承3.3 修饰方法 表示该方法不能被重写 本期内容到这里结束啦~以下为本期内容回顾 下期再见啦~
http://www.hkea.cn/news/14544815/

相关文章:

  • 西安注册公司网站奉化建设网站
  • 采集做网站wordpress 文章参数
  • 洛阳做网站公司有哪些iis 搭建网站
  • 有没有网站教做美食的关于wordpress的书籍
  • 专做民宿预定的网站人才招聘网最新招聘
  • 建立网站有哪些步骤优秀网站模板下载
  • 石家庄建站公司门户网站官网有哪些
  • 青岛网站维护公司网上购物网站的设计与实现
  • 北京网站备案号查询接项目做的网站
  • dw网站建设的心得体会网站建设会计分录怎么写
  • 桂林学校网站制作企业建设好一个网站后_如何进行网站推广?
  • 淘宝有做钓鱼网站的吗网站如何优化排名软件
  • 设计网站的优势珠海招聘网最新招聘信息
  • 建设部官方网站有哪些外贸营销网站建设介绍
  • 网站建设迁移方案四川门户网站建设管理规定
  • 上海营销型网站设计金华网站建设方案咨询
  • 建立网站的模板建筑人才评价网
  • 沭阳县建设局网站阜南县城乡建设局官方网站
  • 旅游网站组织结构图怎么做推广普通话喜迎二十大的手抄报简单
  • 环保局网站建设方案手机网站用什么做的
  • 网站找百度做可以嘛wordpress添加首页
  • 广西灵山县住房和城乡建设局网站定制网站建设服务公司
  • 棋牌网站南昌seo如何优化
  • 网站移动版怎么做有哪些能做专门接做标书的网站
  • ftp网站怎么看后台的代码淘宝官网首页登录注册
  • 在国外建网站方便吗淄博外贸网站哪家好
  • wordpress适用于任何网站吗腾讯域名备案
  • 免费搭建单页网站百度163黄页关键词挖掘
  • wordpress在这个站点注册网站建设实验报告总结
  • 企业资质证书查询官方网站哪里有学网页设计