1.理解面向对象
1.1了解常用的术语
对象、抽象、类、实例、抽象类、接口、构造方法、包、封装、继承、多态
1.2面向对象与面向过程的区别
1.3理解对象
对象---现实世界(包括逻辑世界)的实体的投影和属性
属性---对象的性质
方法---对象的行为
1.4理解类
类是对事物的抽象,将对象的属性和方法封装到独立的单位内部。
2.类
2.1类的定义(public、default、abstract、final修饰符)
[访问修饰符] [修饰符] class类名{ //类成员 }
访问修饰符:public(公开的,最多只有一个包含public修饰的外部类)、default(默认修饰符,可以有多个)
修饰符:abstract(修饰抽象类,只能被继承重写)、final(修饰最终类,不能被继承)
2.2成员变量---对应于属性
2.3成员方法---对应于方法
成员方法:构造方法、main方法、一般成员方法
2.4成员修饰符(public、protected、default、private、static、final、abstract、native、synchronized)
可访问权限
名称 | 当前类 | 相同包 | 子类(不同包) | 所有类 |
public | √ | √ | √ | √ |
protected | √ | √ | √ | |
默认 | √ | √ | ||
private | √ |
static:静态,不需要创建类的实例就可以访问,具有全局变量的效果
final:最终类,属性方法无法修改,可以被继承而不可以重写
abstract:修饰抽象类,方法只有被重写才能使用,自己不能被创建实例对象
native:被修饰方法可以调用非java编写的代码,语言交互
synchronized:同步锁
2.6成员变量和局部变量的区别
(静态变量=类变量)+实例变量 = 成员变量
定义的位置不同,成员变量存在于类中,局部变量存在于方法中
生命周期不同,成员变量与实例对象生命周期一致,局部变量和方法生命周期一致
作用域不同,成员变量在整个类内部可以访问,局部变量则只有在方法中可以访问
修饰符不同(大概局部变量只能被final修饰)
优先级不同,局部变量优先级高
局部变量必须进行变量初始化
2.7 main方法
主方法,程序的入口点,也是程序第一个被执行的方法
3.类的实例
3.1构造器
构造方法,与类名相同,完成实例的初始化,可以有多个,无参或有参,一般public修饰,使用this相互调用(放在第一行)
3.2创建类的实例
2种方法
1----类名 实例名 = new 类的构造方法名(); 2----类名 实例名 = null; 实例名 = new 类的构造方法名();
3.3访问实例的成员
实例名.属性名; 实例名.方法名();
3.4 this关键字
实现访问自身类的方法或属性
3.5匿名对象
一种类似简写的形式:new 类的构造方法名.属性名或方法名();
3.6垃圾回收(System.gc()、Runtime.getRuntime().gc())
不定期的清理无引用的对象所占据的空间
4.方法
4.1方法的定义
4.2方法的分类(无参数方法、有参数方法、无返回值、返回基础数据类型的值、返回引用数据类型的值)
4.3方法的调用
4.4方法的参数传递(值传递、引用传递)
4.5方法的重载
两个或多个同名的方法,并且方法的参数、类型、顺序至少有一个不同
5. static关键字
5.1使用static修饰变量
5.2使用static修饰方法
5.3使用static修饰代码块---可以为类的属性进行初始化
5.4单例模式---确保指定类只有一个实例
6.包
6.1包的概念及应用(分类、访问权限限制、避免类的重名冲突)
package 包名;
6.2使用import导入包(使用长名类、使用import语句)
import 包名.类名; //导入某个类 import 包名. *; //导入所有类
6.3 Java常用的包
java.lang:Java的基础类;
java.awt:创建用户图形界面的类文件集合;
java.swing:轻量级组件包;
java.io:与输入输出相关的文件和流的操作类与接口;
java.util:各种工具类;
java.net:网络编程方面的类和接口;
java.sql:数据库访问相关类集合。
import sun.tools.tree.ThisExpression; //学生成绩信息管理 public class Demo6_1 { private String name; private String major; private double dbmath; private double dbenglish; private void setMessage(String name, String major, double dbmath, double dbenglish) { this.name = name; this.major = major; this.dbmath = dbmath; this.dbenglish = dbenglish; } private void getMessage() { System.out.print("学生信息如下: "); System.out.print("姓名:" + this.name + " 专业:" + this.major + " 数学成绩:" + this.dbmath + " 英语成绩:" + this.dbenglish); } private void sum() { System.out.println("学生的总成绩为:" + (this.dbmath + this.dbenglish)); } private void average() { System.out.print("学生的平均成绩为:" + ((this.dbmath + this.dbenglish)/2)); } public static void main(String[] args) { Demo6_1 stu = new Demo6_1(); stu.setMessage("张三", "电子科学与技术", 150, 148); stu.getMessage(); stu.sum(); stu.average(); } }
学生信息如下:
姓名:张三 专业:电子科学与技术 数学成绩:150.0 英语成绩:148.0学生的总成绩为:298.0
学生的平均成绩为:149.0