java第六天/10.14

来源:互联网 发布:雅典奥运 女排 知乎 编辑:程序博客网 时间:2024/06/05 16:48

一、匿名对象
定义:没有名字的对象。
意义:节省代码,并且很多情况下是针对某个方法只需要调用一次的参数进行传递。
主要的作用就是节省代码量,是代码结构更优雅。
二、封装
1、概念:隐藏对象的属性和细节,仅对外提供公共的方法进行访问。
2、private

a、当类的成员变量使用private修饰符修饰,那么就不可以直接访问到该成员变量。
b、当使用private修饰的成员变量或者成员方法,仅能在本类中使用。
c、private对于main方法的修饰,也是可以使用的。
例:
package _01.org.westos;
public class DemoPrivate {
public static void main(String[] args){
Person4 person=new Person4();
person.name=”sunshine”;
person.setAge(20);
person.action();
}
}
class Person4{
String name;
private int age;
void setAge(int ageParm){
if(ageParm>0&&ageParm<150){
age=ageParm;
}
}
void eat(){
System.out.println(“eat”);
}
void action(){
eat();
speak();
}
void speak(){
System.out.println(“speak:”+name+” “+age);
}
}
这里写图片描述
javaBean
是这样一类的类:
他的所有成员变量都使用private进行修饰,并且对外提供可访问的设置值和获取值的set,get方法。不同的应用场景,可能命名不同。数据库的应用中成为POJO
类。
例:
package _01.org.westos;
public class DemoBean {
static void main(String[] args){
Person1 person = new Person1();
person.setName(“diffo”);
person.setAge(30);
person.speak();
}
}
class Person1{
private String name;
private int age;
void setName(String nameParm){
name = nameParm;
}
String getName(){
return name;
}
void setAge(int ageParm){
age = ageParm;
}
int getAge(){
return age;
}
void speak(){
System.out.println(name+” . “+age);
}这里写图片描述
}

main方法细节
a、每个类中都可以存在main方法,但是执行的时候,jvm会优先查看public的class中是否有main方法。
b、如果没有public的class,那么会按照文件名优先查找类中的main方法。
c、必须定义为public。

三、优先原则
对于一个类的成员方法来说,如果传递的形参变量名称和类的成员变量名称相同,jvm在处理的时候优先当做方法的形参来处理。
四、this 关键字
1、含义:
代表了当前对象的引用。
可以理解为,当前谁来调用,那么方法中的this就代表谁。
对于成员变量可以区分出来的场景,this可加也可不加,实际效果相同。
但是对于实现javaBean/POJO来说,我们建议都加上在setXxx,getXxx方法中。

this:可以加在成员变量的前边来指定对应的引用,也可以加在成员方法的前边。

五、初始化类成员变量的方式
a、在定义成员变量的同时赋值。
//在构造方法执行之前进行赋值,并且该类每个实现的对象,都会被初始化该值。
//意义:当我们需要一个类的所有对象某些成员变量的值一致的时候。

b、提供外界可访问到的方法,在方法中赋值。
//构造方法中直接赋值
//意义:可以在创建对象的同时进行赋值,同时还可以动态指定设定的值是什么

c、通过构造方法进行赋值
//通过调用某个设置值的方法进行赋值,在对象创建完成之后
//意义:动态的修改成员变量的值。

六、static
a、随着类加载而加载
静态方法区中来保存静态成员变量

b.优先于对象创建
Person.className = “java”;

c.被类的所有对象共享
静态的成员变量会保存在该class的静态方法区中,所以每个对象看到的都是同一份.

d.可以通过类名来访问也可以通过对象名来访问。
效果是一样的。

e.推荐通过类名来访问

f.静态的成员,一般称为类相关的成员。

g.static 修饰符既可以修饰成员变量,也可以修饰成员方法。 且修饰之后,就可以通过类名来直接访问到。

h.this变量在静态方法中不可以使用

i.静态方法中只能访问静态成员变量和静态方法。
非静态方法既可以访问静态成员和方法也可以访问非静态成员和方法。
非静态虽然可以访问静态的方法,但是不建议这样做。
七、main方法
修饰符 返回类型 方法名(参数列表){
}
public static void main(String[] args){
}
public:最大的一个访问权限,使得jvm能够成功调用
static:类相关的,与对象无关。A.main([]);

public class A{
main(){
System.out.println(“”);
}
}

void:不需要返回值
方法名:main
参数列表:执行的时候,可以传递参数。
八、工具类
全部都是静态的方法。所以可以通过 类名.functionName() 方式来访问。
一般的话,都会对默认构造方法进行私有化处理,来防止别人使用时习惯性的创建对象来调用方法。
例:
package _01.org.westos;
public class ClassTestFinal {
public static void main(String[] args){
Square square=new Square();
square.setLength(3);
System.out.println(SquareUtil.getCircumLength(square));
System.out.println(SquareUtil.getArea(square));
}
}
//POJO类
class Square{
private int length;
void setLength(int length){
this.length=length;
}
int getLength(){
return this.length;
}
}
//正方形工具类
class SquareUtil{
private SquareUtil(){
}
static int getCircumLength(Square square){
return 4*square.getLength();
}
static int getArea(Square square){
return square.getLength()*square.getLength();
}
}
这里写图片描述