面向对象
面向对象概念
面向对象的思想特点:
1)更符合生活中的思想行为习惯
2)让我们从执行者变成指挥者
3)让复杂的事情简单化
面向对象的设计原则:
不断地创建对象,使用对象,指挥对象做事情
面向对象的三大特征
1)封装
2)继承
3)多态(具体类多态,抽象类多态,借口多态)
面向对象的应用
class Test{
public static void main(String[] args){
Phone phone = new Phone();
phone.brand = "荣耀30pro";
phone.price = 3999;
phone.col = "钛空银";
phone.memory = "8G+256G";
System.out.println("品牌: "+phone.brand);
System.out.println("价格: "+phone.price);
System.out.println("颜色: "+phone.col);
System.out.println("内存: "+phone.memory);
phone.callUp("畅聊");
phone.sendShortMessages();
phone.playGame("王者荣耀");
}
}
class Phone{
String brand;
int price;
String col;
String memory;
public void callUp(String chat){
System.out.println("手机不仅可以打电话!!!还可以"+chat);
}
public void sendShortMessages(){
System.out.println("手机可以发短信!!!");
}
public void playGame(String name){
System.out.println("手机可以"+name+"!!!!");
}
}
局部变量和成员变量有什么区别
成员变量和局部变量的区别?
1)书写位置不同
成员变量:在类中,方法外定义的变量!
局部变量:在方法声明上或者是方法定义中!
2)内存中的位置不同
成员变量:在堆内存中
局部变量:在栈内存中
3)生命周期不同:
局部变量:随着方法调用而存在,随着方法调用完毕而消失!
成员变量:随着对象的创建完毕而存在,随着对象被GC回收掉而消失
4)初始化不同:
成员变量:可以不进行初始化,因为它在堆内存中(跟对象有关系),存在系统默认初始化
局部变量:必须在使用之前对象局部变量进行初始化
当方法的形式参数为引用类型时
class Student{
public void study(){
System.out.println("Good Good Study,Day Day Up!!") ;
}
}
class StudentDemo{
public void method(Student s){
s.study() ;
}
}
class ArgsDemo2{
public static void main(String[] args){
StudentDemo sd = new StudentDemo() ;
Student student = new Student() ;
sd.method(student) ;
}
}
匿名对象
class Student{
public void study(){
System.out.println("我爱学java");
}
}
class StudentDemo{
public void show(Student s){
s.study();
}
}
class StudentTest{
public static void main(String[] args){
StudentDemo stu = new StudentDemo();
Student student = new Student();
stu.show(student);
System.out.println("----------------------") ;
System.out.println("----------------------") ;
StudentDemo stu2 = new StudentDemo();
stu2.show(new Student());
System.out.println("----------------------") ;
System.out.println("----------------------") ;
new StudentDemo().show(new Student());
}
}
封装
class Student{
private String name;
private int age;
private String gender;
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setAge(int age){
this.age = age;
}
public int getAge(){
return age;
}
public void setGender(String gender){
this.gender = gender;
}
public String getGender(){
return gender;
}
private void playGame(String gameName){
System.out.println("想玩"+gameName);
}
public void want(String game){
playGame(game);
}
}
class StudentTest{
public static void main(String[] args){
Student s = new Student();
s.setName("张三");
s.setAge(20);
s.setGender("女");
System.out.println(s.getName()+","+s.getAge()+","+s.getGender());
System.out.println("\n");
s.want("明日之后");
}
}
构造方法
class Student{
private String name;
private int age;
private String gender;
private String hairStyle;
public Student(){
}
public Student(String name,int age,String gender,String hairStyle){
this.name = name ;
this.age = age;
this.gender = gender;
this.hairStyle = hairStyle;
}
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setAge(int age){
this.age = age;
}
public int getAge(){
return age;
}
public void setGender(String gender){
this.gender = gender;
}
public String getGender(){
return gender;
}
public void setHairStyle(String hairStyle){
this.hairStyle = hairStyle;
}
public String getHairStyle(){
return hairStyle;
}
public void study(){
System.out.println("我爱学java");
}
public void playGame(){
System.out.println("能完整的运行出来,我就去打游戏");
}
public void eat(String name){
System.out.println("正在eating!!!"+name);
}
public void smoking(){
System.out.println("he is smoking....");
}
}
class Test5{
public static void main(String[] args){
Student student = new Student();
student.setName("java");
student.setAge(20);
student.setGender("男");
student.setHairStyle("光头");
System.out.println(student.getName()+", "+student.getAge()+", "+student.getGender()+", "+student.getHairStyle());
student.study();
student.playGame();
student.eat("炸鸡");
student.smoking();
System.out.println("-------------------------");
Student stu = new Student("张三",50,"男","寸头");
System.out.println(stu.getName()+", "+stu.getAge()+", "+stu.getGender()+", "+stu.getHairStyle());
student.study();
student.playGame();
student.eat("排骨");
student.smoking();
}
}
static关键字
class Student{
public int num = 10;
public static int num2 = 20;
public void show(){
System.out.println("非静态的方法show()");
System.out.println(num);
System.out.println(num2);
}
public static void method(){
System.out.println("静态的方法method()");
System.out.println(num2);
}
}
class StudentTest{
public static void main(String[] args){
Student s = new Student();
s.show();
Student.method();
}
}
class Person{
String name;
int age;
static String country;
public Person(){}
public Person(String name,int age){
this.name = name;
this.age = age;
}
public Person(String name,int age,String country){
this.name = name;
this.age = age;
this.country = country;
}
public void show(){
System.out.println("姓名:"+name);
System.out.println("年龄:"+age);
System.out.println("国籍:"+country);
}
}
class PersonTest{
public static void main(String[] args){
Person p1 = new Person("王昭君",20,"中国");
p1.show();
System.out.println("--------------------");
Person p2 = new Person("西施",21);
p2.show();
System.out.println("--------------------");
Person p3 = new Person("杨玉环",22);
p3.show();
System.out.println("--------------------");
Person p4 = new Person("貂蝉",23);
p4.show();
}
}