• 4.构造器,this,修饰符详解


    构造器:

    构造器也叫构造方法,无返回值。非构造方法必须要有返回类型

    主要作用:完成对象的初始化,创造对象时,自动调用构造器初始化对象

    即使没有显示地使用static关键字,构造器实际上也是静态方法

    JAVA中静态的东西都是属于类的,为类服务,构造函数是为了初始化对象,为对象服务。构造函数是用来生成实例,既然是实例就不是static的。这两者是相互矛盾的

    1. public class Test1 {
    2. public static void main(String[] args) {
    3. Person person = new Person("小红",18);
    4. System.out.println(person.name+" "+person.age);
    5. }
    6. }
    7. class Person{
    8. String name;
    9. int age;
    10. public Person(){
    11. }
    12. public Person(String sname,int sage){
    13. name = sname;
    14. age = sage;
    15. }
    16. public static void run(){
    17. System.out.println("跑");
    18. }
    19. }

     this

    this.谁就是谁的意思

    1. public class Demo1 {
    2. public static void main(String[] args) {
    3. Person person = new Person("小红",18);
    4. System.out.println(person.name+" "+person.age);
    5. }
    6. }
    7. class Person{
    8. String name;
    9. int age;
    10. public Person(String name,int age){
    11. this.name = name;
    12. this.age = age;
    13. }
    14. public static void run(){
    15. System.out.println("跑");
    16. }
    17. }

    hashCode

    对象. hashCode,显示“地址”

    1. public class Demo1 {
    2. public static void main(String[] args) {
    3. Person person = new Person();
    4. System.out.println(person.name+" "+person.age);
    5. }
    6. }
    7. class Person{
    8. String name;
    9. int age;
    10. public Person(){
    11. this("hong",12);//访问构造器的这句话,必须要放在第一句话。
    12. //不能用在普通方法种
    13. }
    14. // public void f1(){
    15. // this("",22);
    16. // }
    17. public Person(String name,int age){
    18. this.name = name;
    19. this.age = age;
    20. }
    21. }

    Random

    生成随机数方法

    import java.util.Random; public class Demo1 { public static void main(String[] args) { Person person = new Person(); person.m1(); System.out.println(person.random.nextInt()); } } class Person{ Random random = new Random(); int a = random.nextInt(3);//0-2随机数 public void m1(){ System.out.println(a); } }

    包的使用(介绍一下就行)

    访问修饰符

    default就是默认修饰符,没有修饰符

    静态方法和实例方法的区别

    (1)静态方法通过“类名.方法名”,也可以通过对象名.方法名。

    (所以调用静态方法无需创建对象)

    静态方法不允许访问类的非静态成员(包括成员的变量和方法),因此是通过类调用的,没有对象的概念,this->data不能用!!!

    (2) 但是实例方法只能通过对象名.方法名

    同类

    1. package Day;
    2. //同类都可以
    3. public class Demo1 {
    4. public int a = 1;
    5. protected int b = 2;
    6. int c = 3;
    7. private int d = 4;
    8. public void m1() {
    9. System.out.println(a);
    10. System.out.println(b);
    11. System.out.println(c);
    12. System.out.println(d);
    13. }
    14. public static void main(String[] args) {
    15. // System.out.println(a);
    16. Demo1 demo1 = new Demo1();
    17. demo1.m1();
    18. }
    19. }

    同包

    1. package Day;
    2. //同一包下
    3. public class Demo2 {
    4. public static void main(String[] args) {
    5. Demo1 hhh = new Demo1();
    6. System.out.println(hhh.a);
    7. System.out.println(hhh.b);
    8. System.out.println(hhh.c);
    9. // System.out.println(hhh.d);
    10. }
    11. }

    子类

    先暂时跳过哟,与继承有关

    不同包

    1. package Day2;
    2. import Day.Demo1;
    3. public class Demo3 {
    4. public static void main(String[] args) {
    5. Demo1 demo1 = new Demo1();
    6. System.out.println(demo1.a);
    7. // System.out.println(demo1.b);
    8. }
    9. }

    方法和属性修饰符一样用

  • 相关阅读:
    MyBatis - 两种查询树形数据(最多三级结构)
    阿里Java研发面经(已拿offer)
    树上倍增法
    网络安全(黑客)自学——从0开始
    php 获取每月开始结束时间,指定月份的开始结束时间戳
    MATLAB算法实战应用案例精讲-【优化算法】小龙虾优化算法(COA)(附MATLAB代码实现)
    Java——聊聊JUC中的锁(synchronized & Lock & ReentrantLock)
    计算机毕业设计Java鲜花订购网微服务(源码+系统+mysql数据库+Lw文档)
    用桥接模式(Bridge)实现开放接口系统
    SpringBoot 如何使用 Micrometer 进行度量和监控
  • 原文地址:https://blog.csdn.net/m0_61983575/article/details/127889393