1.7Oob封装 继承 访问修饰符 静态和构造方法的执行顺序
1:访问修饰符
private 同类中
默认 同类 同包
protect 同类 同包 子类
public 同类 同包 子类 其它任何地方
2:导包
当两个类同名时 需要进行导包以区分,
3:继承
1)继承成员变量,但与访问修饰符有关系。
4:继承中的构造方法
1)子类中的构造方法默认调用父类的无参构造,如果用super在子类构造中调用父类的有参构造就会将父类的无参构造覆盖,如果在子类构造方法中用this调用
子类其它构造方法也会将父类默认无参构造进行覆盖;
2)子类的同一个构造方法中不可以同时存在super和this因为他们都需要放在方法里面的第一行。
5:子类调用父类的无参构造方法 super(),子类调用父类的有参构造方法super(参数);
6:静态方法,静态代码块,构造方法
1)执行顺序:
静态方法1 静态方法 2 静态方法3
静态代码块4 静态代码块6 静态代码块8
构造方法 5 构造方法7 构造方法9
2)如果创建两个对象对子类进行调用 静态代码块只执行一次,代码块和构造方法执行两次,静态方法的执行取决于是否被调用
- public class A {
- static {
- System.out.println("static A");
- }
- {
- System.out.println("cdoe A ....");
- }
- public A() {
- System.out.println("con A");
- }
- }
- public class B extends A{
- static {
- System.out.println("staticB");
- }
- {
- System.out.println("cdoeB ....");
- }
- public B() {
- super();
- System.out.println("con B");
- }
- }
- public class C extends B{
- static {
- System.out.println("static C");
- }
- {
- System.out.println("cdoe C ....");
- }
- public C() {
- super();
- System.out.println("con C");
- }
- }
- public class Test {
- public static void main(String[] args) {
- C c = new C();
- //
- C c2 = new C();
- }
- }
7:同类中成员方法和静态方法 访问成员变量,静态变量和静态方法 成员方法
- public class B {
- private int age;
- private static int love;
- public void show() {
- // 成员方法可以访问成员变量吗? 1 访问静态变量吗? 1
- age = 13;
- love = 14;
- noShow();
- }
- // 在静态方法当中不能访问实例变量(成员变量), 必须确保当前已经产生了实例,再使用实例访问。
- public static void noShow() {
- // love = 55;
- //age=34; 报错
- }
- }
8:静态实例2
- public class StaticA {
- // static修饰 成员变量--》 变为类变量,静态变量
- public static int year = 2000;
- private static int love = -100;
- private int age;
- // 代码块,随着每个实例的创建都会执行一次
- static {
- System.out.println("静静地 睡觉!");
- }
- public StaticA() {
- System.out.println("我的构造器");
- }
- public int getAge() {
- return age;
- }
- public void setAge(int age) {
- this.age = age;
- }
- public static void myLife() {
- System.out.println("流浪。。。。");
- }
- }
- public static void main(String[] args) {
- StaticA s = new StaticA();
- s.setAge(18);
- StaticA s2 = new StaticA();
- s2.setAge(19);
- System.out.println(s.getAge());
- System.out.println(s2.getAge());
- // 类变量的值(访问,类名.变量名访问),所有的对象也可以访问
- System.out.println(StaticA.year);
- System.out.println(s.year);
- System.out.println(s2.year);
- s.year = 2001;
- System.out.println(StaticA.year);
- System.out.println(s.year);
- System.out.println(s2.year);
- // 使用静态方法 类名.方法名, 也可以使用对象.方法名
- // 提供是共性的功能。 编写工具类,工具方法
- StaticA.myLife();
- s.myLife();
- }
- }
9:关于继承中静态代码块 代码块 无参构造 有参构造的执行情况
- public class C {
- private int age;
- static {
- System.out.println("C静态代码块");
- }
- {
- System.out.println("C代码块");
- }
- public C() {
- super();
- System.out.println("C无参构造");
- }
- public C(int age) {
- super();
- this.age = age;
- System.out.println("C有参构造");
- }
- public int getAge() {
- return age;
- }
- public void setAge(int age) {
- this.age = age;
- }
- }
- public class B extends C{
- private int name;
- static {
- System.out.println("B静态代码块");
- }
- {
- System.out.println("B代码块");
- }
- public B() {
- super();
- System.out.println("B无参构造");
- }
- public B(int name) {
- super();
- this.name = name;
- System.out.println("B有参构造");
- }
- }
- public class A extends B{
- private int tall;
- static {
- System.out.println("A静态代码块");
- }
- {
- System.out.println("A代码块");
- }
- public A() {
- super();
- System.out.println("A无参构造");
- }
- public A(int tall) {
- super();
- this.tall = tall;
- System.out.println("A有参构造");
- }
- public int getTall() {
- return tall;
- }
- public void setTall(int tall) {
- this.tall = tall;
- }
- }
- public class TextABC {
- public static void main(String[] args) {
- A a = new A();
- A b = new A(6);
- }
- }
- /*c静态代码块
- b静态代码块
- a静态代码块
- c代码块
- c无参
- b代码块
- b无参
- a代码块
- a无参
- c代码块
- c无参
- b代码块
- b无参
- a代码块
- ay有参
- */
1.7Oob封装 继承 访问修饰符 静态和构造方法的执行顺序的更多相关文章
- [No0000E7]C# 封装 与访问修饰符
C# 支持的访问修饰符: Public Private Protected Internal Protected internal Public 访问修饰符 Public 访问修饰符允许一个类将其成员 ...
- 【Java基础】继承中的代码块和构造方法的执行顺序探索
本文讲述有关一个类的静态代码块,构造代码块,构造方法的执行流程问题.首先来看一个例子 /** * Created by lili on 15/10/19. */ class Person{ stati ...
- No.4.测试子类继承父类各代码块和构造方法的执行顺序
Son子类 public class Son extends Parent { static String y ="son的static属性"; public static voi ...
- JAVA知识总结(三):继承和访问修饰符
今天乘着还有一些时间,把上次拖欠的面向对象编程三大特性中遗留的继承和多态给简单说明一下.这一部分还是非常重要的,需要仔细思考. 继承 继承:它是一种类与类之间的关系,通过使用已存在的类作为基础来建立新 ...
- C#面向对象 (访问修饰符、封装、继承、多态)
先看一下创建一个新项目时的基本格式 using System; using System.Collections.Generic; using System.Linq; //引用的命名空间 using ...
- Java访问修饰符和三大特征(封装,继承和多态)
一.访问修饰符基本介绍: java提供四种访问控制修饰符号,用于控制方法和属性(成员变量)的访问权限(范围): 1.公开级别:用public修饰,对外公开2.受保护级别:用protected修饰,对子 ...
- 类的高级:访问修饰符、封装、静态类成员static、内部类;
访问修饰符: 公开访问(public):对所有子类,非子类访问: 受保护的(protected):只有同包子类.非子类.不同包子类可访问,不同包非子类不可访问: 私有的(private):只有本类可访 ...
- java:包、继承,访问修饰符
包 包(package) 用于管理程序中的类,主要用于解决类的同名问题.包可以看出目录. 包的作用 [1] 防止命名冲突. [2] 允许类组成一个单元(模块),便于管理和维护 [3] 更好的保护类.属 ...
- package,继承,访问修饰符
1.package 包(package),用于管理程序中的类,可用于处理类的同名问题. 1.1定义package的方法 package 包名; package用于定义包,必须写在源文件有效代码的第一句 ...
随机推荐
- main 及Scanner
通过main方法的args数组可以从控制台获取一组字符串数据. 1.Scanner类用于扫描从控制台输入的数据,可以接收字符串和基本数据类型的数据. 2.Scanner类位于java.util.Sca ...
- 402 CSS菜鸟:transform and transition
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- Gradle part1 HelloWorld
(https://spring.io/guides/gs/gradle/#scratch) ----gradle helloworld----- 1.下载后安装 Unzip the file to y ...
- 023_supervisorctl管理服务注意事项
一. (1)问题 我在线上使用supervisorctl管理服务时遇到程序文件更新了,但是下次supervisorctl执行的时候并没有更新, 原因是supervisor更新后必须重新读取加载文件才行 ...
- Set集合判断对象重复的方法
Set<User> userSet = new HashSet<>(); User user1= new User("aa","11") ...
- 利用特性和反射给泛型Model赋值
为了解决从数据库读取的表字段和自己建的viewModel字段名称不相符的问题 本人小白,初次将特性及反射应用到实例,写的不好的地方还请大家多多包涵 新建一个控制台应用程序命名为ReflectAndAt ...
- LuoGu P4996 咕咕咕
题目描述 小 F 是一个能鸽善鹉的同学,他经常把事情拖到最后一天才去做,导致他的某些日子总是非常匆忙. 比如,时间回溯到了 2018 年 11 月 3 日.小 F 望着自己的任务清单: 看 iG 夺冠 ...
- php 的文件操作类
<?php header('Content-type:text/html;charset=utf8'); Class FILE { private static $path; private s ...
- js的逆向解析
过程: 知道如何寻找登录的接口 知道如何确定js的位置 知道如何观察js的执行过程 知道js的执行方法 1. 确定网站的登录的接口登录的form表单中action对应的url地址通过抓包可以发现,在这 ...
- (七)Knockout 创建自定义绑定
创建自定义绑定 你可以创建自己的自定义绑定 – 没有必要非要使用内嵌的绑定(像click,value等).你可以你封装复杂的逻辑或行为,自定义很容易使用和重用的绑定.例如,你可以在form表单里自定义 ...