第十章 封装
1.静态方法与实例方法的区别
静态方法:
public class test_p405 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//静态方法与实例方法的区别
//静态方法要用“类名.方法名”的方式调用,实例方法要先new对象,再用“引用.”的方式去调用
//静态方法的调用
doSome();
test_p405.doSome();
//实例方法的调用
test_p405 a1 = new test_p405();
a1.doOther();
}
//静态方法
public static void doSome() {
System.out.println("do some!");
}
//实例方法(对象级别的方法)
public void doOther() {
System.out.println("do other!");
}
}
静态方法:类相关,访问不了实例对象
实例方法:对象相关,必须现有对象才能访问
2.面向对象的三大特征:封装、继承、多态
3.什么是封装?
不再对外暴露复杂的数据,对外只提供简单的操作入口
4.怎么进行封装?
- 属性私有化(使用private关键字进行修饰)
- 对外提供set方法和get方法作为操作入口
public class test_p405 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//静态方法与实例方法的区别
//静态方法要用“类名.方法名”的方式调用,实例方法要先new对象,再用“引用.”的方式去调用
Person p1 = new Person();
p1.setAge(150);
System.out.println("年龄:" + p1.getAge());
}
}
class Person {
private int age;
//因为私有属性,需要提供一个访问入口
//外部程序只能通过访问入口对数据进行读写
//来完成读的方法(get)
public int getAge() {
return age;
}
//来完成写的方法(set)
public void setAge(int a) {
//设置关卡,判断输入的是否合法
if(a<0 || a>100) {
System.out.println("输入不合法,请重新输入");
return;
}
age=a;
}
}
第十章 this和static
1.static
- 所有static修饰的都是类相关的,都是采用“类名.”的方式去访问的
静态变量举例:
class Chinese{
int id;
static String country=”中国”;//因为一个类中都是一样的
}
局部变量:栈
实例变量:堆内存
静态变量:方法区
2.什么时候定义成实例方法:
此方法描述了一个行为,该行为必须由对象去触发
方法体中访问了实例变量,一定是个实例方法
工具类当中的方法一般都是静态的
public class test_p417 {
//this
public static void main(String[] args) {
// TODO Auto-generated method stub
Custermer c1 = new Custermer("张三");
c1.shopping();
}
}
class Custermer{
String name;
//构造方法(赋值),方法名必须和类名相同
public Custermer() {
}
public Custermer(String a) {
name = a;
}
//实例方法(动作),动作名不需要和类名相同
public void shopping() {
//c1调用shopping,this就是c1
//c2调用shopping,this就是c2
System.out.println(name + "在购物");
}
}
3.静态代码块
语法:
static {
Java语句
}
静态代码块在类加载时执行并且只执行一次,自上而下的顺序执行且在main方法之前执行
4.this是一个关键字,全部小写
一个对象一个this,this是一个引用(保存当前对象的内存地址的变量,即this指向自身,代表当前对象),保存在堆内存中。
5.this只能使用在实例方法中,谁调用这个实例方法,this就是谁