Java中代码块和继承
1、代码块,是用{}括起来的代码。
局部代码块,是用与限定变量的生命周期,及早释放,提高内存利用率。
构造代码块,把多个构造方法中相同的代码可以放到这里,每个构造方法执行前,首先执行构造代码块。
静态代码块,对类的数据进行出事话,仅仅只执行一次。
2、继承,把多个类中相同相同的成员给提取出来定义到一个独立的类中,然后让多个类和该独立的类产生一个关系,这多个类就具备了这些内容,这个关系叫继承。
java中继承的关键字是extends。格式为class 子类名 extends 父类名{}
继承可以提高的代码的复用性,提高代码的维护性,让类与类之间产生一个关系,是多态的前提。
继承的弊端,让类的耦合性增强,这样某个类的改变,就会影响其他和该类相关的类。打破了封装性。
java中继承的特点,只支持单继承。可以多层继承。
举例:
class GrandFather{public void show1() {System.out.println("I am grandfather");}
}class Father extends GrandFather{public void show2() {System.out.println("I am father");}
}class Son extends Father{public void show3() {System.out.println("I am son");}
}public class Main {public static void main(String[] args) {Son s=new Son();s.show1();s.show2();s.show3();}
}
继承的注意事项,子类不能继承父类的私有成员。子类不能继承父类的构造方法,但是可以通过super去访问。不要为了部分功能去继承
class Father{private int num1=10;int num2=20;private void show1() {System.out.println(num1);System.out.println(num2);}public void show2() {System.out.println(num1);System.out.println(num2);}
}class Son extends Father{}public class Main {public static void main(String[] args) {Son s=new Son();//s.show1();子类不能继承父类的私有方法//System.out.println(s.num1);子类不能访问父类的私有变量s.show2();System.out.println(s.num2);}
}
java中的成员关系
a:成员变量,子类的成员变量名称和父类中的成员变量名称不一样很简单,如果不一样子类的方法访问变量的查找顺序。在子类方法的局部范围找,有就使用。在子类的成员范围找,有就使用。在父类的成员范围找,有就使用。找不到,就报错。
b:构造方法,子类的构造方法默认会去访问父类的无参构造方法,是为了子类访问父类数据的初始化。如果父类中没有无参构造方法,子类通过super去明确调用带参构造。子类通过this调用本身的其他构造,但是一定会有一个区访问了父类的构造,让父类提供无参构造
c:成员方法,子类的成员方法和父类的成员方法不一样很简单,如果不一样找的顺序为,在子类中找,有就使用。在父类中找,有就使用。
举例:
class Father{public Father() {System.out.println("father");}
}class Son extends Father{public Son() {//super();//这个不写super,默认为有superSystem.out.println("son");}public void show() {System.out.println("hello");}
}public class Main {public static void main(String[] args) {Son s=new Son();//在构造时首先输出的是父类的构造方法s.show();}
}
class Person{private String name;private int age;public Person() {}//如果这个注销,下面的继承将编译错误public Person(String name,int age) {this.name=name;this.age=age;}//这个用的不多,但是存在public void setName(String name) {this.name=name;}public String getName() {return name;}public void setAge(int age) {this.age=age;}public int getAge() {return age;}
}
class Student extends Person{public Student() {}public Student(String name,int age) {super.setName(name);//super调用的是父类的super.setAge(age);//或者//super(name,age);}
}public class Main {public static void main(String[] args) {//方式1Student s=new Student();//无参构造会自动生成s.setName("贺志营");s.setAge(20);System.out.println(s.getName()+"---"+s.getAge());//方式2Student s1=new Student("贺志营",20);System.out.println(s1.getName()+"---"+s1.getAge());}
}
Java中代码块和继承相关推荐
- 举例说明Java中代码块的执行顺序
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 结论 这里先把整理好的结论抛给大家,然后我在写个程序来验证我们的结论.在Java类被new的 ...
- java中代码块之静态代码块和非静态代码块
一.代码块: 语法:使用{}包裹的,可以在{}中写代码. 修饰符:static 或者不修饰. static修饰的为静态代码代码块. 格式: //静态代码块,随着类的加载児执行static{System ...
- java子类代码块_java中父类子类静态代码块、构造代码块执行顺序
父类静态(代码块,变量赋值二者按顺序执行) 子类静态 父类构造代码块 父类构造方法 子类构造代码块 子类构造方法 普通方法在实列调用的时候执行,肯定位于上面之后了 //父类A public class ...
- 第三周 Java语法总结__static关键字__代码块__继承__this和super的区别__重写__final关键字__多态__抽象__接口__形参问题__包__权限修饰符__内部类
文章目录 6.static关键字 1)静态static关键字的特点: 2)关于static关键字的使用注意事项 3)什么时候将变量定义为成员变量: 7.文档说明书: 8.代码块 9.继承 1)继承的概 ...
- 25天掌握java基础(八)——static、单例、代码块、继承
文章目录 Demo08-static.单例.代码块.继承 1.static 1.1static静态关键字 1.1.1static修饰成员变量 1.1.2static修饰成员方法 1.1.3static ...
- Java 初始化 代码块_Java中初始化块详解及实例代码
Java中初始化块详解 在Java中,有两种初始化块:静态初始化块和非静态初始化块. 静态初始化块:使用static定义,当类装载到系统时执行一次.若在静态初始化块中想初始化变量,那仅能初始化类变量, ...
- 万字总结,一文带你秒懂Java中的封装、继承和多态(有代码 有示例)
Java中的封装.继承和多态 前言 一.面向对象有什么优势? 二.面向对象的三大特性! 1.封装 1.1访问限定符 1.2关于包的导入 1.2封装 2.继承 2.1继承的语法 2.2父类成员访问 3. ...
- 转:Java中子类是否可以继承父类的static变量和方法而呈现多态特性
原文地址:Java中子类是否可以继承父类的static变量和方法而呈现多态特性 静态方法 通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法,关于static方法,声明 ...
- Java中实现接口与继承的区别
** Java中实现接口与继承的区别 ** 首先,先来了解一下什么是接口和继承.接口一般是使用interface来定义的.接口定义同类的定义类似,分为接口的声明和接口体,其中接口体由常量定义和方法定义 ...
最新文章
- 年薪30万+,那些35岁的程序员都是如何度过 “中年危机” 的?
- java new 删除吗,java泛型对象初始化-java泛型对象会实例化吗T t=new T()
- 面向对象方法的优势简化软件开发的过程_软件开发技巧的途径
- 需求获取的三阶段:需求背景、需求调研、需求分析 (2)
- 21 WM配置-策略-入库策略1-定义固定仓位的策略F(Fixed Bin Strategy)
- vue 引入qunee_Vue页面中js引入的问题
- echarts横轴展示不全使用滚动条(dataZoom)的方法
- connect()在UDP连接中的应用一例
- NOWCODER暑期多校第四场F:Beautiful Garden(签到题)题解
- C 标准库 –stdio.h 简介
- 生信自学笔记(三)分子数据库
- OCR开源代码库介绍
- 在线编辑Word——插入图表
- xfs文件系统误删除文件恢复(testdisk工具)
- 【软件测试】小陈她的测试追梦之路,实习开端到测试第一人......
- matlab针对电阻和电源电动势为r1,第三章 电力电子与MATLAB应用技术
- 开关电源保险丝、整流桥及输入滤波电容的选型
- 2021/4/29刷题
- iphone与android共享位置,苹果手机,相互始终共享位置了以后,查看不了对方的位置...
- 使用poi导出excel
热门文章
- 使用JAX-WS构建Web Services .
- ListView的两种使用方法--Android学习笔记
- 带下划线的二级域名IE无法读取session
- [Swift实际操作]七、常见概念-(12)使用DispatchGroup(调度组)管理线程数组
- springcould结合springbboot微服务 开发@^——^@ 模式讲解
- JavaScript-DOM(2)
- 老话题:自己编写只截窗口客户区的截屏软件(VB2010)
- Android 去除标题栏和状态栏的方法
- MySQL之增删改查(以查为主)
- 坐标轨迹计算_工业机器人工具坐标系和用户坐标系的区别与联系