1、super();

//调用本类中的构造方法
this(实参列表);
//调用父类中的空参数构造方法
super();
//调用父类中的有参数构造方法
super(实参列表);

①构造方法默认第一行都是super();
②默认的隐式super()语句在父类中没有对应的构造方法,必须在构造方法中通过this或者super明确要调用的构造方法。
③第一行写了this调用了本类其他构造方法,super调用父类的语句就没有了。

2.final(太监类)

可以修饰类,类的成员,以及局部变量,不能修饰构造方法
特点:
①final修饰类不能被继承,但是可以继承其他类

class Yy {}
final class Fu extends Yy{} //可以继承Yy类
class Zi extends Fu{} //不能继承Fu类

②final修饰的方法不能被子类重写,但父类中没有被final修饰方法,子类重写后可以加final

class Fu {    // final修饰的方法,不可以被覆盖,但可以继承使用public final void method1(){}public void method2(){}
}
class Zi extends Fu {//重写method2方法public final void method2(){}
}

③final修饰的变量称为常量,只能赋值一次

final int i = 20;
i = 30; //赋值报错,final修饰的变量只能赋值一次

④引用类型的变量值为对象地址值不能更改,地址内的对象属性值可以修改

final Person p = new Person();
Person p2 = new Person();
p = p2; //final修饰的变量p,所记录的地址值不能改变
p.name = "小明";//可以更改p对象中name属性值

⑤修饰成员变量,需要在创建对象前赋值

class Demo {//直接赋值final int m = 100;//final修饰的成员变量,需要在创建对象前赋值,否则报错。final int n; public Demo(){//可以在创建对象时所调用的构造方法中,为变量n赋值n = 2016;}
}

3.static 静态修饰符
特点:
①被static修饰的成员变量属于类

class Demo {public static int num = 100;
}class Test {public static void main(String[] args) {Demo d1 = new Demo();Demo d2 = new Demo();d1.num = 200;System.out.println(d1.num); //结果为200System.out.println(d2.num); //结果为200
    }
}

②被static修饰的成员可以通过类名直接访问(建议这么做 类名.静态成员变量名;类名.静态成员方法名(参数))

class Demo {//静态成员变量public static int num = 100;//静态方法public static void method(){System.out.println("静态方法");}
}
class Test {public static void main(String[] args) {System.out.println(Demo.num);Demo.method();}
}

注意事项:
①静态内容优先于对象存在,只能访问静态,不能使用this和super。静态修饰的内容存于静态区。

class Demo {//成员变量public int num = 100;//静态方法public static void method(){//this.num; 不能使用this/super。System.out.println(this.num);}
}

②同一个类中,静态成员只能访问静态成员。

class Demo {//成员变量public int num = 100;//静态成员变量public static int count = 200;//静态方法public static void method(){//System.out.println(num); 静态方法中,只能访问静态成员变量或静态成员方法
        System.out.println(count);}
}

③main方法为静态方法为程序执行入口,不属于任何一个对象,可以定义在任意类中
④多态调用方法,编译看等号左边。静态方法,运行父类中的静态方法,非静态方法,运行子类的重写方法。成员变量,编译运行全是父类

定义静态常量:public static final 数据类型 变量名 = 值; 变量名用全部大写,多个单词使用下划线连接
接口中的每个成员变量都默认使用public static final修饰,必须显示赋值。可以直接用接口名访问

interface Inter {public static final int COUNT = 100;
}
//访问接口中的静态变量
Inter.COUNT

4.匿名对象

创建对象时,只有创建对象的语句,例如:new Person();

new Person();

特点:
①创建匿名对象直接使用,没有变量名

new Person().eat()  //eat方法被一个没有名字的Person对象调用了。

②匿名对象在没有指定其引用变量时,只能使用一次

new Person().eat(); //创建一个匿名对象,调用eat方法
new Person().eat(); //想再次调用eat方法,重新创建了一个匿名对象

③匿名对象可以作为方法接收的参数、方法返回值使用

class Demo {public static Person getPerson(){//普通方式//Person p = new Person();    //return p;//匿名对象作为方法返回值return new Person(); }public static void method(Person p){}
}class Test {public static void main(String[] args) {//调用getPerson方法,得到一个Person对象Person person = Demo.getPerson();//调用method方法
        Demo.method(person);//匿名对象作为方法接收的参数Demo.method(new Person());}
}

5.内部类
在内部类中可以直接访问外部类的所有成员
①成员内部类(定义在外部类中的成员位置):外部类名.内部类名 变量名 = new 外部类名().new 内部类名();

class Body {//外部类,身体private boolean life= true; //生命状态public class Heart { //内部类,心脏public void jump() {System.out.println("心脏噗通噗通的跳")System.out.println("生命状态" + life);}}
}

//访问内部类
public static void main(String[] args) {//创建内部类对象Body.Heart bh = new Body().new Heart();//调用内部类中的方法
    bh.jump();
}

②局部内部类(定义在外部类方法中的局部位置):在外部类方法中,创建内部类对象,进行访问

class Party {//外部类,聚会public void puffBall(){// 吹气球方法class Ball {// 内部类,气球public void puff(){System.out.println("气球膨胀了");
}
}
//创建内部类对象,调用puff方法
new Ball().puff();
}
}

//访问内部类
public static void main(String[] args) {//创建外部类对象Party p = new Party();//调用外部类中的puffBall方法
    p.puffBall();
}

转载于:https://www.cnblogs.com/akiyama/p/10059308.html

java面向对象super,final,static,匿名对象,内部类学习相关推荐

  1. Java自学笔记——Java面向对象——04.抽象类、接口、内部类

    Java 面向对象各节 Java自学笔记--Java面向对象--01.回顾方法 Java自学笔记--Java面向对象--02.构造器.类和对象 Java自学笔记--Java面向对象--03.封装.继承 ...

  2. 八、Java面向对象编程(类、对象、方法、重载、可变参数、作用域、构造器、this本质)

    文章目录 Java面向对象编程(类.对象.方法.重载.可变参数.作用域.构造器.this本质) 一.类与对象 1. 类与对象的引出 2. 使用现有技术解决 3. 现有技术解决的缺点分析 4. 类与对象 ...

  3. 面向小姐姐的编程——java面向对象之final、static关键字

    文章目录 final关键字 final的概念 final的作用 修饰类: 修饰变量: 总结 代码示例 static关键字 static的概念 static的作用 调用方式 static修饰成员变量 特点: ...

  4. Java面向对象深化:(三)内部类

    文章目录 1.什么是内部类? 2.类中定义的内部类特点 3.内部类的分类 1.什么是内部类? 将一个类定义在另一个类的内部,该类就称为内部类 public class Outer{//外部类class ...

  5. 面向对象的程序设计1 理解对象—— JS学习笔记2015-7-4(第75天)

    面向对象的程序设计一-- 理解对象 转载于:https://www.cnblogs.com/zhangxg/p/4621520.html

  6. Java面向对象(七)包、内部类、垃圾回收机制

    一.包 package 包名:  ---- 声明包    注意: 一个java文件中只能有一句package语句 ,  并且必须放在java文件首行 . import 包名: --- 导包 impor ...

  7. java面向对象计算器怎么写_Java对象简单实用案例之计算器实现代码

    对 Java中的对象与属性,方法的使用,简单写了个案例 import java.util.Scanner; class Calculste { int a; //定义两个整数 int b; Strin ...

  8. java面向对象跑马游戏_面向“对象”和“过程”

    在学习软工视频的时候总是想不明白,面向对象和面向过程,这两个东西字面上肯定能分得清,这个是没有问题的,但是具体到怎样算是面向对象,怎样又是面向过程?这样一问,大概模糊的想法还是有的,毕竟是模糊的. 面 ...

  9. 匿名对象、内部类、匿名内部类

    匿名对象 概念 创建对象时,只有创建对象的语句,却没有对象地址值复制给某个变量.虽然是创建对象的简化写法,但是应用场景非常有限. 格式:new 类名(参数列表) 举例:new Scanner(Syst ...

最新文章

  1. linux c++ 目录操作,C++文件及文件夹操作整理(代码示例)
  2. GAN 模型生成山水画,骗过半数观察者,普林斯顿大学本科生出品
  3. LeetCode Permutation Sequence(求排列中的第k个排列是什么)
  4. 如何办理夫妻间的房屋产权转移手续?
  5. c++STL之vector简易使用
  6. 2018-2019-1 20189210 《LInux内核原理与分析》第六周作业
  7. CentOS 6 系统启动流程
  8. 微信公众号开发--.Net Core实现微信消息加解密
  9. 关押罪犯 扩展域并查集
  10. 毁掉孩子自信的10个杀手
  11. 4.深入分布式缓存:从原理到实践 --- Ehcache 与 Guava Cache
  12. Atitit..jdk java 各版本新特性 1.0 1.1 1.2 1.3 1.4 1.5(5.0) 1.6(6.0) 7.0 8.0 9.0 attilax 大总结
  13. java求两个时间相差月_java计算两个时间相差几个月
  14. Python实现双色球号码随机生成
  15. FOSSID(开源代码检测工具)
  16. 新年新气象,牛年更牛,开始新的征程
  17. 自定义typecho handsome主题标签云颜色
  18. C# 将字符串(符合xml格式)与XML互转
  19. RxJava2基础总结(二)
  20. 港科夜闻|香港科大2021年本科计划招生190人,首推人工智能延伸主修

热门文章

  1. Ext.data.SimpleStore的使用方法
  2. LAB Color Space
  3. 深度学习《Photo Editing》
  4. 网络压缩《网络压缩论文整理》
  5. oracle推式任务发料,Oracle EBS物料清单管理系统简介.pptx
  6. java ajax级联_jQuery ajax级联二级菜单(转)
  7. 04-Fibonacci
  8. 国外问答网站Quora数据的爬虫 Java
  9. Opencv--copyTo()函数的使用方法
  10. Spring框架 声明式事务