1.Java类及类的成员:属性、方法、构造器;代码块、内部类
2.面向对象的三大特征:封装性、继承性、多态性、(抽象性)
3.其他关键字:this,super,static,final,abstract,interface,package,import
基本元素:类和对象
package j1;
//类和对象的使用
public class PersonTest {
public static void main(String[] args) {
//创建类的对象=类的实例化=实例化类
Person p1=new Person();
//Scanner scan=new Scanner(System.in);
//调用对象的结构:属性、方法
//调用属性:“对象.属性”
p1.name="Tom";
p1.isMale=true;
System.out.println(p1.name);
//调用方法:“对象.方法”
p1.eat();
p1.sleep();
p1.talk("Chinese");
Person p2=new Person();//如果创建了一个类的多个对象,则每个对象都独立的拥有一套类的属性(非static)
System.out.println(p2.name);//null
System.out.println(p2.isMale);//false
System.out.println(p2.age);//1
Person p3=p1;
System.out.println(p3.name);
p3.age=10;
System.out.println(p1.age);//10
}
}
//创建类及类的成员
class Person{
//属性/field/成员变量/域/字段:对应类中的成员变量
String name;
int age=1;
boolean isMale;
//方法/成员方法/函数/method:对应类中的成员方法(函数)
public void eat(){
System.out.println("吃饭");
}
public void sleep(){
System.out.println("睡觉");
}
public void talk(String language){
System.out.println("说话"+language);
}
}
对象的内存解析
成员变量与局部变量
1.相同:定义格式一样:数据类型 变量名=变量值;先声明后使用;有其对应的作用域
2.不同:在类中声明位置的不同 :属性直接定义在类的一对{}里;局部变量声明在方法内、方法形参、代码块内、构造器形参、构造器内部的变量
package j1;
/*封装与隐藏
1.当我们创建一个类的对象以后,可以通过“对象.属性”对对象的属性进行赋值。这里,赋值操作要受到属性的数据类型和存储类型的制约。
要加入额外的限制条件,只能通过方法进行限制条件的添加,同时将属性声明为private,此时针对属性体现了封装性。
2.封装性的体现
属性私有化(private)的同时,提供公共(public)的方法来获取(getxxx)和设置(setxxx)此属性的值
除此之外,不对外暴露的私有的方法也是体现
3.权限修饰符
private、缺省、protected、public
可以修饰类及类的内部结构:属性、方法、构造器、内部类
修饰类只能用缺省、public
*/
public class AnimalTest {
public static void main(String[] args) {
Animal a=new Animal();
a.name="花花";
a.age=1;
//a.legs=4;
a.show();
a.setLegs(-6);
a.show();
}
}
class Animal {
String name;
int age;
private int legs;
//对属性的设置
public void setLegs(int l){
if(l>=0&&l%2==0){
legs=l;
}else{
legs=0;
}
}
//对属性的获取
public int getLegs(){
return legs;
}
public void eat(){
System.out.println("动物进食");
}
public void show(){
System.out.println("name="+name+",age="+age+",legs="+legs);
}
}
package j1;
/*
this 关键字的使用
1.this可以用来修饰:属性、方法、构造器
2.可理解为当前对象
在类的方法中,可以使用“this.属性”或“this.方法”的方式调用当前对象的属性或方法。但是,通常情况下省略。
若方法的形参和类的属性同名时,必须使用this表明为属性
3.this调用构造器
①在类的构造器中,可以显式的使用“this(形参列表)”方式,调用本类中指定的其它构造器
②不能自己调自己
③必须放首行
*/
public class PersonTest {
public static void main(String[] args) {
Person p1=new Person("lili",12);
System.out.println(p1.GetAge());
}
}
class Person{
private String name;
private int age;
public Person(){
}
public Person(String name){
this();
this.name=name;
}
public Person(int age){
this();
this.age=age;
}
public Person(String name,int age){
this(age);
this.name=name;
}
public void SetName(String name){
this.name=name;
}
public String GetName(){
return name;
}
public void SetAge(int age){
this.age=age;//this当前对象的
}
public int GetAge(){
return age;
}
}