【Java面向对象 05】

摘要:
1、 构造方法1.方法名与类名相同。2.没有返回值,不需要void关键字。2.调用类中的属性必须首先由对象引用,即新类名()和reference:referencename。属性如下:Test01类对Students类进行初始化调用,Test02类修改Students的属性,即,修改成员变量publicclassStudents{//学生ID intid;//成员变量(属性)--˃若要访问成员变量,必须有一个对象才能访问它/

一、构造方法

1、方法名与类名称相同,2、没有返回值,不需要void关键字
2、调用类里面的属性必须先进行对象的引用,即:new 类名(),引用:引用名.属性

以下举例:Test01类对Students类进行初始化调用,Test02类对Students类进行属性的修改,即修改成员变量
public class Students {
    //学号
    int id;//成员变量(属性)-->想要访问成员变量,必须有对象才能访问
    //姓名
    String name;
    //性别
    String sex;
    //地址
    String address;
    //年龄
    int age;
    //构造方法(1、方法名与类名称相同,2、没有返回值,不需要void关键字)
    Students(){}
}
public class Test01 {
    public static void main(String[] args){
        //创建学生对象
        //语法:new.类名();
        //Students是一种引用数据类型,所有的类都是引用数据类型
        //类里面的方法调用(类名.方法名),类里面的属性调用,引用对象.属性名
        Students zhangsan = new Students();

        System.out.println("id:"+zhangsan.id);
        System.out.println("name:"+zhangsan.name);
        System.out.println("age:"+zhangsan.age);
        System.out.println("address:"+zhangsan.address);
        System.out.println("age:"+zhangsan.age);
    }
}
public class Test02 {
    //修改变量
    public static void main(String[] args){
        Students stu = new Students();

        stu.id = 1001;
        stu.name = "张三";
        stu.age = 20;
        stu.address = "北京";
        stu.sex = "男";

        System.out.println("id:"+stu.id);
        System.out.println("name:"+stu.name);
        System.out.println("age:"+stu.age);
        System.out.println("address:"+stu.address);
        System.out.println("age:"+stu.age);
    }
}

二、对象的封装

封装性:属性私有化,对外提供公开的setter 和 gettter方法
目的:不让外部程序对属性进行任意访问,通过方法进行访问
属性的安全可以得到保障,可以在方法中编写业务逻辑代码
不带static的方法叫非静态方法,成员方法,实例方法,调用时必须先创建对象才能调用,调用的方法:引用.方法名(实际参数)
public class Students {
   private int age;

   public void setAge(int _age){
       if(age<0 || age >120){
           System.out.println("年龄不符合!!!");
       }
       age = _age;
   }

   public int getAge(){
       return age;
   }

   public static String name(String n){
       if( n == "张三"){
           System.out.println("正确");
       }else{
           System.out.println("错误");
       }
       return n;
   }
}
public class Test001 {
    public static void main(String[] args){
       Students stu = new Students();

       stu.setAge(-10);
      // System.out.println(stu.getAge());

       stu.setAge(25);
       System.out.println(stu.getAge());

       //静态方法,既可以用类名.方法名调用。也可以用引用.方法名调用
        Students.name("张三");
        stu.name("李四");

    }
}

三、进一步了解对象的引用

引用数据类型是内存地址的传递,基本数据类型是值传递(不涉及到堆,只涉及到栈)

package com.JavaStudy.study0417;

public class Test002 {
    public static void main(String[] args){
        Study stu = new Study();
//        Test002 t = new Test002();
//        t.add(stu);  甭管是不是同一个类,非静态方法调用只能用引用.方法名()
        add(stu);
        System.out.println(stu.age);
    }

    public static void add(Study s){
        s.age++;
        System.out.println(s.age);
    }

//    public  void add(Study s){
//        s.age++;
//        System.out.println(s.age);
//    }

}

class Study{

    int age;

    public Study(){}
}

==========
执行结果:
1
1

数据传递理解图

【Java面向对象 05】第1张

程序先执行main方法-->进行压栈-->执行Study()构造方法,构造方法new动作时会进行:1、创建Study对象 2、初始化成员变量int age=0  --> 构造方法执行结束后进行弹栈-->

弹栈后给Study对象分配内存地址,引用stu会指向此内存地址,并且保存内存地址-->程序在执行add()方法进行压栈-->add方法内的形式参数会进行值的传递(stu传递给s),所以会指向

堆的内存地址-->执行s.age++进行修改为1,并打印-->执行结束后进行弹栈,弹栈都内存地址同样也保存了-->在执行main方法里面的System.out.println(stu.age); 值仍然是1

特别注意:对象的引用,传递的是内存地址

免责声明:文章转载自《【Java面向对象 05】》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇FineReport连接多维数据库示例及操作【转】高性能网络编程4--TCP连接的关闭下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

java单例类

public class SingleTonDemo { public static void main(String[] args) { SingleTon.getSingle(); SingleTon.getSingle(); } } class SingleTon{//创建单例类/由类的本身创建对象 //private stati...

精选30道Java笔试题解答

转:精选30道Java笔试题解答 都是一些非常非常基础的题,是我最近参加各大IT公司笔试后靠记忆记下来的,经过整理献给与我一样参加各大IT校园招聘的同学们,纯考Java基础功底, 老手们就不用进来了,免得笑话我们这些未出校门的孩纸们,但是IT公司就喜欢考这些基础的东西,所以为了能进大公司就~~~当复习期末考吧。花了不少时间整理,在整理过程中也学到了很多东西...

String源码详解

一、基本概念。     1、继承实现关系。因为被final修饰,因此是不可继承的String类,避免被他人继承后修改。实现了三个接口。可序列、可比较,有序。几个String兄弟类     2、本质就是字符数组,同时,它是不可变的。 二、成员变量。      1、字符数组value。访问权限私有,因此String类外具有不可访问特点,因为具有final...

Scala 面向对象(八):特质(接口) 一

1 Scala接口的介绍 从面向对象来看,接口并不属于面向对象的范畴,Scala是纯面向对象的语言,在Scala中,没有接口。 Scala语言中,采用特质trait(特征)来代替接口的概念,也就是说,多个类具有相同的特征(特征)时,就可以将这个特质(特征)独立出来,采用关键字trait声明。 理解trait 等价于(interface + abstract...

OOTV杯设计模式大赛——模式总结

摘抄自《大话设计模式》一书 报名参赛: “来、来、来,快来报名了,设计模式大赛,每个人都有机会,每个人都能成功,今天你参加比赛给自己一个机会,明天你就成功还社会一个辉煌。来来......”台子上方一很长的横幅,上写着“OOTV杯设计模式大赛海选”,下面一个帅小伙拿着话筒卖力的吆喝着。 “大姐、二姐,我们也去参加报名参加吧。”工厂三姐妹中最小的简单工厂说道,...

Java基础知识提要

1、简述Java的基本历史 java起源于SUN公司的一个GREEN的项目,其原先目的是:为家用消费电子产品发送一个信息的分布式代码系统,通过发送信息控制电视机、冰箱等 2、简单写出Java特点,写出5个以上,越多越好 简单的、面向对象的、分布式的、安全的、稳定的、与平台无关的、可解释的、多线的、动态的语言。 3、什么是Java? JAVA:一种编程...