面向对象1

1、局部变量不能写限制修饰符。局部变量与成员变量同名,那么成员变量被隐藏。

2、栈内存存地址,堆内存存首地址。引用存储的是对象内存空间的首地址。

3、万物皆对象;类是对大量对象共性的抽象
     关系:类是创建对象的模板,对象是类的具体化。

4、public final double PI=3.1415926;//PI值不能改变,常量

package LESSON7;
public class demo3 {
    //final表示最终的
    //final修饰的类不能被继承
    /*final*/ class D{
        public /*final */int i=1;//final修饰的变量不能被改变
        public /*final*/ void test(){//final修饰的方法不能被重写
            i++;
        }
        
    }
    class E extends D{
        public void test(){
            
        }
        
    }
    public static void main(String[] args) {
        
    }
}

5、局部变量与成员变量同名,那么成员变量被隐藏。

6、任意类型类型都可作为函数参数进行传递(基本和引用),如对象

package LESSON5;
//饲养员
public class Breeder {
    public Breeder(String name){
        this.name=name;
        
    }
    public String name;
    public void feed(Animal animal,Food food){//对象作为函数参数
        System.out.println(name+"给"+animal.name+"吃"+food.name);
    }
    
    
}


package LESSON5;
//动物
public class Animal {
    public Animal(String name){
        this.name=name;
        
    }
    public String name;
    

}

package LESSON5;
//食物
public class Food {
    public Food(String name){
        this.name=name;
        
    }
    public String name;
    

}


package LESSON5;
public class exercise2 {
    public static void main(String[] args) {
        Breeder b=new Breeder("张三");
        Food f=new Food("鱼食");
        Animal a=new Animal("大鱼");
        b.feed(a, f);
    }

}

7、this是一种特殊的引用,指向当前对象
     this的三种使用方法:
    如果发生局部变量可以成员变量命名冲突时,可以通过this.成员变量名的方式区分成员变量和局部变量
    在构造器中,可以通过this关键字将局部变量传递参数的值赋值给全局变量
    一个构造方法中需要调用同一个类的另一个构造方法,可以通过this()的方式调用,但this()必须要书写在第一行

    构造器:

    构造器的名称必须与类名相同。
    构造器没有返回类型,包括关键字void也不能有。
    任何类都含有构造器,如果没有显式地定义类的构造器,则系统会为该类提供一个默认的构造器。这个默认的构造器不含任何参数。一旦在类中显式地定义了构造器,系统就不会再为这个类提供默认的构造器了。

package LESSON5;

public class Student {
    public String name;
    public int age;
    public char sex;


    //构造器:创建对象
    public Student(String name)//声明一个参数的构造器,通过参数传进来给属性赋值    
    {
        //this:表示当前对象
        this.name=name;//把值赋给全局变量public String name;this.name全局变量
    }
    //声明两个参数的构造器
    public Student(String name,int age){
        this(name);//(调用指定构造器)使用this调用另外一个重载的构造器,只能在构造器中使用。只能写到第一行
        this.age=age;        
    }
    //定义三个参数的构造器
    public Student(String name,int age,char sex){
        this(name,age);//使用this调用另外一个重载的构造器,只能在构造器中使用
        this.sex=sex;
        
    }
    
    //方法
    public void test(){
        System.out.println("姓名:"+name+"	年龄:"+age+"	性别:"+sex);
        this.eat();//调用指定的方法,不一定写在第一行(和构造器中的不同)
    }
    public String drink(String he){//形参  return;表示结束 return只有返回数据的功能,没有打印功能
        
        return name+"在"+he;
        
    }
    public void eat(){
        System.out.println("吃");
        
    }
    
    //方法重载:在同一个类中,方法名相同,参数列表不同的现。参数列表:参数类型 参数个数,参数顺序。
    public int sum(int x,int y){
        return x+y;
    }
    public double sum(double x,double y){
        return x+y;
    }
    public double sum(double x,double y,double z){
        return  x+y+z;
        
    }
    public float sum(float x,float y){
        return x-y;
    }

    
}
package LESSON5;

public class test {


    public static void main(String[] args) {
        //创建对象的过程其实是调用了构造器,并且赋值,根据参数的个数来进行构造器选择    
        Student stu=new Student("张三",18,'男');        
        stu.test();
        System.out.println(stu.drink("喝可乐"));//实参
        
        System.out.println(stu.sum(3, 2));
        System.out.println(stu.sum(3.0, 2.0));
        System.out.println(stu.sum(3.0, 2.0,1.0));
        System.out.println(stu.sum(3f, 2f));        
        
    }
}
原文地址:https://www.cnblogs.com/qfdy123/p/10932889.html