IDEA使用 Java面向对象
2016-08-05 14:43
155 查看
IDEA使用
快捷键的使用
修改模板
面向对象
例 把大象放冰箱总共分几步
基本知识
断言
包名定义
重载和重写
java中的引用
finalize方法
抽象方法和抽象类
接口
面向对象的三大特征 封装 继承 多态
sout : System.out.println()
fori : for循环
Ctrl + Y : 删除当前行
Ctrl+Shift+上下: 移动当前行
Alt + Insert : 快速插入构造方法, getter和setter方法等
a.switch: 快速打开以a为参数的switch
s.nn : 迅速判非空
new String().var : 当变量使用
new String().field : 当属性使用
面向过程
重载: 是在一个类中,参数类型,个数,位置不同, 方法名相同
重写:
子类重写父类中的方法, 访问权限不能小于父类的访问权,
返回值类型: 为父类返回值类型或其子类型.
方法名一定相同
参数列表一定相同
声明抛出的异常一定是父类声明抛出的范围内的异常
软引用 : 内存不足, 会被回收
弱引用
虚引用
抽象方法一定是在抽象类中, 抽象方法没有方法体.
为了被重写而存在的
如果继承一个有抽象方法的抽象类时, 一定要重写抽象方法.
抽象类
不能被实例化
方法: 默认具有public abstract两个关键字
jdk1.8之后, 在返回值之前加上default, 可以在实现接口中不用重写该方法
jdk1.8之后接口可以有静态方法
接口主要用于方法的传递
接口不可以被实例化
注意: jdk1.8之后, 如果有这样一个场景: 有两个接口A, B都有两个完全相同的且含有default关键字的方法, 此时实现该接口的类必须重写该方法
实现接口的方法
静态代码块只执行一次, 在类被使用时执行(虚拟机加载类时)
构造代码块(非静态代码块), 在类创建对象时执行
执行顺序
父类静态代码块->子类静态代码块->父类构造代码块->父类构造方法->子类构造代码块->子类构造方法
封装性, 限制一些属性的访问权限
继承, 子类的分类更加细, 属性和方法更多, 扩展父类.
引用数据类型转换:
自动: 子类对象转为父类对象
强制: 父类对象转为子类对象,可能会产生构造异常
检查是否可以强转的关键字:
快捷键的使用
修改模板
面向对象
例 把大象放冰箱总共分几步
基本知识
断言
包名定义
重载和重写
java中的引用
finalize方法
抽象方法和抽象类
接口
面向对象的三大特征 封装 继承 多态
IDEA使用
快捷键的使用
psvm : main方法sout : System.out.println()
fori : for循环
Ctrl + Y : 删除当前行
Ctrl+Shift+上下: 移动当前行
Alt + Insert : 快速插入构造方法, getter和setter方法等
a.switch: 快速打开以a为参数的switch
s.nn : 迅速判非空
new String().var : 当变量使用
new String().field : 当属性使用
修改模板
找到Settings -> Editor -> File and Code Templates面向对象
例: 把大象放冰箱总共分几步?
面向对象icebox.open(); icebox.boxing(elephant); icebox.close();
面向过程
open(icebox*); boxing(icebox*, elephant*); close(icebox*)
基本知识
//创建对象 //创建对象, 会去调用构造方法 //类中如果没有声明构造方法时会默认生成无惨构造方法 Icebox box = new Icebox(10); box.open(); //初始化所有属性, 即便是什么都不写 //未赋值的属性为默认值 : 引用对象为空, boolean为false, 其他都为0 public Icebox(int size){ this.size = size; }
断言:
//断言: 用于调试, 用-ea开启, 如果断言为false, 则抛出异常, 若不开启断言无效 assert e.getSize() < size : "太大!";//用java -ea Demo01命令打开断言
包名定义
域名反转重载和重写
八竿子打不着关系重载: 是在一个类中,参数类型,个数,位置不同, 方法名相同
重写:
子类重写父类中的方法, 访问权限不能小于父类的访问权,
返回值类型: 为父类返回值类型或其子类型.
方法名一定相同
参数列表一定相同
声明抛出的异常一定是父类声明抛出的范围内的异常
java中的引用
强引用 : 一般不会回收软引用 : 内存不足, 会被回收
弱引用
虚引用
finalize方法
一般情况下不需要重写//当对象对回收时调用的方法, 相当于C++中的析构函数, 不过会自动调用 @Override protected void finalize() throws Throwable { super.finalize(); } System.gc();//唤醒垃圾回收 //垃圾回收机制在一个单独的线程中
抽象方法和抽象类
抽象方法抽象方法一定是在抽象类中, 抽象方法没有方法体.
为了被重写而存在的
如果继承一个有抽象方法的抽象类时, 一定要重写抽象方法.
抽象类
不能被实例化
接口
接口中没有属性, 只有常量(以static final修饰)方法: 默认具有public abstract两个关键字
jdk1.8之后, 在返回值之前加上default, 可以在实现接口中不用重写该方法
jdk1.8之后接口可以有静态方法
//实现接口时可以免除重写 public interface Drawable { default void draw(){ } } static void test(){ }
接口主要用于方法的传递
接口不可以被实例化
注意: jdk1.8之后, 如果有这样一个场景: 有两个接口A, B都有两个完全相同的且含有default关键字的方法, 此时实现该接口的类必须重写该方法
实现接口的方法
//普通方式 Drawable drawable = new Rect(); drawable.draw(5); //匿名内部类 Drawable d = new Drawable() { @Override public void draw(int i) { System.out.println("匿名内部类" + i); } }; d.draw(5); //1.8以后的lambda语法 //限定条件: 只能实现单方法的接口 // ()中写参数 {} 中写方法体 Drawable draw = (i) -> {System.out.println("lambda" + i);}; draw.draw(5);
静态代码块只执行一次, 在类被使用时执行(虚拟机加载类时)
构造代码块(非静态代码块), 在类创建对象时执行
执行顺序
父类静态代码块->子类静态代码块->父类构造代码块->父类构造方法->子类构造代码块->子类构造方法
/** * Project:Test * Create: * Date:16/8/11 */ public class Person { protected String name = "二狗子"; static { System.out.println("父类静态代码块"); } { System.out.println(name + "父类代码块"); } public Person(){ System.out.println(name + "父类构造方法"); } public String getName() { return name; } public void setName(String name) { this.name = name; } public static void say(){ } } public class Student extends Person{ private int id = 1000; static { // id = 1;//不能访问 System.out.println("子类静态代码块"); } { // id = 1;//可以访问 System.out.println(name + id + "子类代码块"); } public Student(){ System.out.println(name + id + "子类构造方法"); } public int getId() { return id; } public void setId(int id) { this.id = id; } } /** * Project:Test * Create: * Date:16/8/11 */ public class Test { public static void main(String[] args) { // Student student = null; // Student.say();//调用静态方法,先执行父类静态代码块,再执行子类静态代码块,如果静态方法是继承自父类且没重写,只执行父类静态代码块 // new Person();//静态代码块,构造代码块,构造方法;声明的带赋值语句的属性初始化在构造代码块之前,静态代码块无法访问非静态属性 new Student();//执行子类时顺序,父类静态代码块->子类静态代码块->父类构造代码块->父类构造方法->子类构造代码块->子类构造方法 } }
面向对象的三大特征: 封装 继承 多态
http://www.cnblogs.com/hnrainll/archive/2012/09/18/2690846.html封装性, 限制一些属性的访问权限
继承, 子类的分类更加细, 属性和方法更多, 扩展父类.
引用数据类型转换:
自动: 子类对象转为父类对象
强制: 父类对象转为子类对象,可能会产生构造异常
检查是否可以强转的关键字:
//类型检查关键字, 是否为后者的实例 // 引用变量 类 if (thing instanceof Elephant) { Elephant elephant = (Elephant) thing; System.out.println(elephant.getLegs()); }
相关文章推荐
- 深入java面向对象四:Java 内部类种类及使用解析(转)
- 6 Java基础语法(二维数组,参数传递与数据加密问题)&面向对象(面向对象思想,类与对象及使用,对象内存图解)
- 使用Java面向对象单词必备
- Java基础(极客)——09、Java面向对象中类与对象的概念和使用
- Java面向对象-方法的定义及简单使用
- 06-03 Java 面向对象思想概述、开发设计特征,类和对象的定义使用,对象内存图
- java使用 ArrayList 的增删改(Java面向对象基础练习)
- 2. Java面向对象之泛型-构造方法中使用
- java学习日记_29:面向对象之JDK帮助文档的使用。08.06至07
- java学习日记_12:面向对象之如何使用类
- 使用java面向对象创建动物类并输出动物信息
- java面向对象中抽象类的使用方法
- java面向对象- 多态性的体现和使用
- JAVA基础day05 面向对象思想 成员变量和方法 封装 构造方法和this的使用
- 2.4Java面向对象-数组工具类创建使用过程
- 使用Java实现面向对象程序设计2
- Java面向对象-方法的定义及简单使用
- java例题学习:面向对象之什么时候使用成员变量
- Java面向对象接口的使用
- 2. Java面向对象之泛型-构造方法中使用