zoukankan      html  css  js  c++  java
  • 面向对象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));        
            
        }
    }
  • 相关阅读:
    高进度乘法FFT优化
    Activity的四种加载模式
    异步任务AsyncTask
    利用Handler在子线程中更新UI
    Android 屏幕旋转监听
    HDOJ-1698-线段树成段更新
    HDOJ-1671-字典树
    HDOJ-1251 字典树
    python数据结构与算法
    find the lowest number location
  • 原文地址:https://www.cnblogs.com/qfdy123/p/10932889.html
Copyright © 2011-2022 走看看