什么是面向对象:
建立面向对象思维方式:
如何学习面向对象:
类与对象的关系
类的定义
在Java中可以使用以下的语句定义一个类:
class 类名称{
属性名称;
返回值类型 方法名称(){}
}
对象的定义
类名称 对象名称 = new 类名称() ;
按照以上的格式就可以产生对象了。
如果要想访问类中的属性或方法(方法的定义),则可以依靠以下的语法形式:
对象.属性 ;
对象.方法() ;
对象的声明
在java中对象声明有两种含义
声明对象:Horse horse= null; ;
// 表示声明了一个对象,但是此对象无法使用,horse没有具体的内存指向
实例化对象:horse= new Horse() ;
// 表示实例化了对象,可以使用
//通过对象调用方法:
horse.eat()
//匿名对象调用方法:
new Horse().eat()
java.lang.NullPointerException
对象在内存中的结构:
Horse horse= null;
horse = new Horse();
给对象的属性赋值:
horse.name =“小白”;
horse.age = 4;
在内存中创建多个对象:
Horse horse1=null horse1 = new Horse()
Horse horse2=null horse2 = new Horse()
声明两个对象,一个实例化,一个没实例化
Horse horse1=null horse1 = new Horse()
Horse horse2=null
对象之间的赋值:
horse1.name=“小白” horse2=horse1
horse1.age=4 horse2.name=“小黑”
分别实例化两个对象:
Horse horse1=null horse1 = new Horse ()
Horse horse2=null horse2 = new Horse()
对象之间的赋值:
horse1.name=“小白” horse2=horse1
horse1.age=4 horse2.name=“黑黑”
horse2.name=“小黑”
类与对象小结
封装性的概念
封装的好处
封装缺点:
封装之前:
class Person{
String name;
int age;
}
封装之后:
class Person{
//属性是成员变量
private String name;
private int age;
//参数及方法内定义的变量是局部变量
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
}
成员变量和局部变量
什么是构造方法
构造方法的定义:
构造方法是在类中定义的,构造方法的定义格式:
方法名称与类名称相同,无返回值类型的声明。
对象的实例化语法:
Dog dog = new Dog(); //new Dog后面有个括号,带括号表示调用了方法,此时调用的方法就是构造方法了
构造方法重载:
public Dog(){}
public Dog(String name){
this.name = name;
}
public Dog(String name,int age){
this.name = name;
this.age = age;
}
构造方法小结
什么时候一个类只需要一个对象?比如,工具类(没有属性的类,只有行为)并且该工具对象被频繁使用。
权衡只用一个对象与产生多个对象的内存使用,来确定该类是否要定义为只需要一个对象。
在Java基础中,this关键字是一个最重要的概念。使用this关键字可以完成以下的操作:
示例一:值传递
public class ValueDemo{
public static void main(String[] args){
int x = 10;
method(x) ;
System.out.println(“x=”+x) ;
}
public static void method(int mx){
mx = 20;
}
}
示例二:引用传递
public class RefDemo1{
public static void main(String[] args){
Duck d = new Duck();
method(d) ;
System.out.println(“Duck age =”+d.age) ;
}
public static void method(Duck duck){
duck.age = 5;
}
}
class Duck{
int age = 2; //省略封装
}
示例三:String传递
public class RefDemo2{
public static void main(String[] args){
String name =“小飞”;
method(name) ;
System.out.println(“name=”+name) ;
}
public static void method(String sname){
sname =“小备”;
}
}
示例四:String传递
public class RefDemo3{
public static void main(String[] args){
Person p = new Person();
method(p) ;
System.out.println(“person name=”+p.name) ;
}
public static void method(Person p ){
p.name =“备备”;
}
}
class Person{
String name =“飞飞”; //省略封装
}