1.封装:
1)目的:
为了保证类成员属性的安全性.
2)private关键字:
私有的,不能直接访问的;
3)特点:
被private修饰的成员变量或者是成员方法,只能在本类中访问;
外界类是不能直接访问的,间接可以通过公共的成员方法访问!
权限修饰符:
private :最小
public: 最大
4)构造方法:
a)概念:
构造方法是一种特殊的方法,方法名和类名一致;
b) 特点:
1)方法名和类名一致;
2)构造方法没有返回值类型
3)连void都没有
构造方法是重载的!
方法重载:
方法名相同,参数列表不同,与返回值无关!
参数列表不同:
参数个数
参数类型
考虑类型先后属性
c)分类:
1) 无参构造方法
2) 没有参数
d)构造方法的注意事项:
1)当我们开发者既没有提供无参构造方法,也没有提供有参构造方法,
系统永远给我们提供 "无参构造方法"
类名 对象名 = new 类名() ; //创建对象的格式
2)如果我们提供了有参构造方法,那么系统不会在提供无参构造方法
e)构造方法的作用:
给类的成员属性进行数据初始化.
f)成员变量(私有修饰)赋值几种方式:
1)公共的访问方法setXXX(xx):赋值
2)有参构造方法进行赋值
public 类名(参数类型1 变量名1,参数类名2 变量名2...){
this.成员变量名1 = 变量1;
this.成员变量名2 = 变量2 ;
...
}
g)this关键字:
作用:代表当前类的地址值引用:(局部变量与成员变量名一致,成员变量隐藏局部变量.)
4)this关键字目的:
为了解决代码的冗余并且最大的需要解决的就是:内存销毁.
//定义一个人类
class Person{
String name ; //姓名
int age ; //年龄
//静态修饰
static String country ;//静态的成员变量
//无参构造方法
public Person(){}
//带三个参的有参构造方法
public Person(String name,int age,String country){
this.name = name ;
this.age = age ;
this.country = country ;
}
//提供带两个参的有参构造方法:name,age
public Person(String name,int age){
this.name = name ;
this.age = age ;
}
//提供show方法,来展示人的信息...
public void show(){
System.out.println("该人的姓名是"+name+",年龄是:"+age+",所在的国籍是:"+country);
}
}
//测试类
public class StaticDemo {
public static void main(String[] args) {
//古代四大美女
// 有参构造方法赋值(3个参数的)
Person p1 = new Person("王昭君",25,"中国") ;
p1.show() ;
System.out.println("-----------------------------------------");
//Person p2 = new Person("西施",18,"中国") ;
//改进后:创建一个Person对象,带两个参数的
Person p2 = new Person("西施",18) ;
p2.show();
System.out.println("-----------------------------------------");
// Person p3 = new Person("貂蝉",20,"中国") ;
//改进后
Person p3 = new Person("貂蝉",20) ;
p3.show();
System.out.println("-----------------------------------------");
// Person p4 = new Person("杨玉环",30,"中国") ;
//改进之后
Person p4 = new Person("杨玉环",30) ;
p4.show();
System.out.println("------------------------------------------------------------------");
Person p5 = new Person("高圆圆",42,"美国") ;
p5.show();
p1.show();
p2.show();
p3.show();
p4.show();
}
}
2.static关键字:
1)概念:
共享,共用(可以被多个对象共用).
2)特点:
1)被静态修饰的方法/变量,都是随类的加载而加载. 2)共享,共用(可以被多个对象共用). 3)优先于对象存在,不能与this关键字共存,this是需要等待对象创建完毕,而静态修饰的,优先进入static内存区. 4)静态修饰的方法/变量,推荐使用类名访问. 如果是静态修饰的成员变量. 类名.变量名; 如果是静态修饰的成员方法. 类名.方法名();
3)使用过程中的注意事项:
1)非静态的成员方法,可以访问静态的成员变量或非静态的成员变量. 2)静态的成员方法: 只访问静态的成员变量或静态的成员变量.
5)静态代码块的加载机制:
随着类的加载而加载,优先对象存在
class Demo{} Demo.class----> 将static的东西先进内存
Demo d = new Demo() ; 开辟栈内存空间的时候,就需要加载类
6)代码块的优先级
静态代码块 > 构造代码块 > 构造方法
2.什么时候将一个变量定义为成员变量?
这个变量能够描述这个类的属性(现实真实的事物属性)----->将变量------>成员变量(类中方法外).
3.代码块的含义:
使用{}包裹起来的称为"代码块"
*
* 分类:
* 局部代码块:{},在局部位置(方法定义中定义)
* 作用:限定局部变量的生命周期
* 构造代码块:
* {} :在构造方法之前(类的成员位置)
* 特点:在执行构造方法之前,如果存在构造代码块,优先执行构造代码块,然后才是构造方法!
* 作用:将构造方法中初始化的过程,可以在构造代码块中使用(一般开发中很少,一些笔试题出现,考点:考的就是构造代码块和构造方法之前)
* 静态代码块----->应用场景:jdbc中就会使用到...
* 特点:随着类的加载而加载,优先于对象存在
* static{
*
* }
*
*
* 静态代码块只执行一次,因为类就加载一次! (考点)
*
*
* 优先级: (考点)
*
* 静态代码块 > 构造代码块 > 构造方法