首页 > 编程语言 >java入门笔记2(类和对象到接口)

java入门笔记2(类和对象到接口)

时间:2024-09-07 15:36:55浏览次数:6  
标签:java 入门 void System 接口 String println public out

类和对象

最简单的类

package study;

public class test1{
    public int brand;
    public String name;
    public void read(){
        System.out.println(brand+"book");
    }
    public  void  eat(int a){
        System.out.println(name+"  eat  "+a+"  meal");
    }
}



package study;

public class test {
    public static void main(String[] args) {
        test1 a=new test1();
        a.brand=1;
        a.name="lihua";

        a.read();
        a.eat(3);
    }
}

 private可以使外部创建的对象无法直接访问到类里的各个成员,而是要通过事先定义好的各个方法进行访问

this用于当形参与成员名相同时进行区别,同时也可以作用于多个对象

制作一个简单的标准类

package study;

public class test1{
  private int number;
  private String name;
  public test1(){}
  public  test1(int a,String b){this.number=a;this.name=b;}
  public void setNumber(int c){this.number=c;}
  public int  getNumber(){return this.number;}
  public void setName(String d){this.name=d;}
  public String getName() {return name;}

}


package study;
public class test {
    public static void main(String[] args) {
      test1 a=new test1();
      a.setName("lihua");
      a.setNumber(10);
      System.out.println(a.getName());
      System.out.println(a.getNumber());

      test1 b=new test1(20,"linan");
      System.out.println(b.getName());
      System.out.println(b.getNumber());
    }
}

字符串

基本数据类型作比较时,比较的是数值大小,当引用类型作比较时,比较的是地址

字符串直接比较使用的是地址值,可以使用equals函数比较字符串内容

String和Stringbuilder的区别在于String的内容不可变,Stringbuilder的内容可变

Stringbuilder可以通过append添加内容和reverse反转字符串,优点是不需要额外创建对象

 string和stringbuilder相互转换,并完成反转

public class Main {
    public static void main(String[] args) {
       String s="helloworld";
       StringBuilder str=new StringBuilder(s);
       str.append("people");
       str.reverse();
       str.toString();
        System.out.println(str);
    }
}

集合基础ArrayList

import java.util.Scanner;
import java.util.ArrayList;
public class Main {
    public static void main(String[] args) {
        //尖括号内指定类型
      ArrayList<String> arr=new ArrayList<String>();
      //不限长度
      arr.add("hello");
      arr.add("world");
      arr.add("java");
      System.out.println(arr);
      //指定添加
      arr.add(1,"china");
      System.out.println(arr);
      //删除元素,返回值为布尔类型
        System.out.println(arr.remove("china"));
        //删除指定元素,并返回元素值
        System.out.println(arr.remove(1));
        //获取指定位置的元素值
        System.out.println(arr.get(1));
        //返回集合的大小
        System.out.println(arr.size());
        //修改集合的元素值
        System.out.println(arr.set(1,"anything"));
        System.out.println(arr);
    }
}

继承

 super关键字可以访问父类成员

this可以用于访问本类成员

子类创建对象会自动调用父类的无参构造方法

成员和方法的访问顺序是先访问子类的局部变量和方法,然后是子类的全局变量和方法,最后是父类的成员和方法

子类不能继承父类的私有成员,子类不能继承多个父类,但可以线性继承

子类要想继承父类就必须要比父类的访问权限高,public>默认>private

package study;
public class test {
    public static void main(String[] args) {
      test1 a=new test1();
      a.setName("lihua");
      a.setNumber(10);
      System.out.println(a.getName());
      System.out.println(a.getNumber());

      test1 b=new test1(20,"linan");
      System.out.println(b.getName());
      System.out.println(b.getNumber());


      test2 c=new test2();
      c.setNumber(1);
      c.setName("hello");
      c.showthis();;
    }
}



package study;

public class test1{
  private int number;
  private String name;
  public test1(){}
  public  test1(int a,String b){this.number=a;this.name=b;}
  public void setNumber(int c){this.number=c;}
  public int  getNumber(){return this.number;}
  public void setName(String d){this.name=d;}
  public String getName() {return name;}

  public void show(){
    System.out.println("helloworld");
  }


}



package study;

public class test2 extends test1{
    public  test2(){
        System.out.println("extenf the test1");
    }
    public  void  showthis()
    {
        System.out.println(getNumber()+getName());
    }
}

继承猫和狗

package extendtest;

public class animal {
    private int age;
    private String name;

    public animal() {
        System.out.println("this is a animal");
    }

    public animal(int age, String name) {
        this.age = age;
        this.name = name;
    }

    public int getAge() {
        return age;
    }


package extendtest;

public class cat extends animal{
    private int age;
    private String name;
    public void lookdoor(){
        System.out.println("look the door");
    }
}


package extendtest;

public class dog extends animal{
    public int age;
    public String name;
    public void catcha(){
        System.out.println("catch the mouse");
    }
}


package extendtest;

import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;

public class demo {
    public static void main(String[] args) {
        cat c=new cat();
        c.setName("hello");
        System.out.println(c.getName());
        c.setAge(10);
        System.out.println(c.getAge());
        c.lookdoor();

        dog d=new dog();
        d.setName("world");
        d.setAge(9);
        System.out.println(d.getName());
        System.out.println(d.getAge());
        d.catcha();

    }

}

包其实就是文件夹,可以通过import来导包,多级包可以用.来隔开

同一个包中的父类可以访问全部权限,同一个包中的子类和无关类不能访问private权限,不同包中的子类不能访问private和默认类,不同包中的无关类只能访问public类型

 final修饰符修饰变量时,变量不可以被修改,修饰函数时,函数不能被重写,修饰类时,类不可以被继承

final修饰修饰局部变量时,如果变量是数据类型,其值不可以改变,如果是引用类型,其地址值不可以改变

static修饰类中成员,该成员能够被全部对象共享,可以通过对象或者类名直接访问

static修饰局部变量或方法时,静态方法只能访问静态变量

多态

将父类引用给子类,前提是子类继承了父类

多态的规则是:

变量编译看赋值表达式左面,执行也看赋值表达式左面

方法编译看赋值表达式左面,执行看赋值表达式右面

原因是方法可以被重写,但是变量不可以

多态中父类引用指向子类对象为向上转型,反之为向下转型

多态好处是可以扩展程序,让父类可以抽象为需要的子类

但是缺点是丧失了子类的特殊性

抽象类

如果一个方法中没有方法体,那么这个方法为抽象方法,一个包含抽象方法的类称为抽象类

抽象类的子类要么也是抽象类,要么就得重写抽象类中的抽象方法

抽象类要通过多态来实例化

package abtracttest;

public abstract  class animal {
    private int age;
    private String city;
    public abstract void eat();

    public animal() {
    }

    public animal(int age, String city) {
        this.age = age;
        this.city = city;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }
}


package abtracttest;

public class cat extends animal{
    public int age=20;

    @Override
    public void eat() {
        System.out.println("cat eat fish");
    }
    public void playgame(){
        System.out.println("catch the mouse");
    }

}


package abtracttest;

public class dog extends animal{
    @Override
    public void eat() {
        System.out.println("dog eat bone");
    }
}


package abtracttest;

public class animaldemo {
    public static void main(String[] args) {
      animal a=new cat();
      a.setAge(10);
      a.setCity("shanghai");
        System.out.println(a.getAge());
        System.out.println(a.getCity());
        a.eat();

        animal b=new dog();
        b.setAge(11);
        b.setCity("sichuan");
        b.eat();
        System.out.println(b.getAge());
        System.out.println(b.getCity());
    }
}

 


package abtracttest;

public class animal {
public int age=60;

public void eat(){
System.out.println("animal eat food");
}
}

package abtracttest;

public class animalcatch {
public void animalhunt(animal a){a.eat();}
}

package abtracttest;

public class animaldemo {
public static void main(String[] args) {
animal a=new cat();
System.out.println(a.age);
cat c=(cat)a;
c.playgame();
animalcatch ca=new animalcatch();
ca.animalhunt(c);
}
}

package abtracttest;

public class cat extends animal{
public int age=20;

@Override
public void eat() {
System.out.println("cat eat fish");
}
public void playgame(){
System.out.println("catch the mouse");
}

}

标签:java,入门,void,System,接口,String,println,public,out
From: https://www.cnblogs.com/alexlance/p/18399259

相关文章

  • Java IO流详解:像流水一样读写数据
    JavaIO流详解:像流水一样读写数据在Java编程世界中,IO流就像水流一样,不断地在内存和外部存储之间搬运数据。这些数据流可以是字节,也可以是字符。不管是文件读写、网络传输,还是数据处理,IO流总是无处不在。下面我们就来揭开IO流的面纱,看看它是如何工作的,以及在实际开发中有哪些应用......
  • Java 通过aspose.words 把docx文件转成pdf文件后中文变成小方块,aspose转pdf乱码问题的
    Java通过aspose.words把docx文件转成pdf文件后中文变成小方块,aspose转pdf乱码问题的解决方法一、问题描述​在centos服务器使用aspose.word转换word文件为pdf的时候显示中文乱码,但是在win服务器上使用可以正常转换二、问题原因由于linux服务器缺少对应的字库导致文件转换出现......
  • java+vue计算机毕设城市应急救援辅助系统【源码+开题+论文+程序】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着城市化进程的加速,城市人口密集度不断提高,各类突发灾害与紧急事件的风险也随之增加。自然灾害如地震、洪水,以及人为事故如火灾、交通事故等,均对城......
  • java+vue计算机毕设宠物购物系统【源码+开题+论文+程序】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在当今社会,随着人们生活水平的提高和情感需求的多样化,宠物已成为许多家庭不可或缺的重要成员。宠物的养护与陪伴不仅丰富了人们的情感世界,也带动了宠......
  • java+vue计算机毕设宠物交易平台【源码+开题+论文+程序】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着社会经济的快速发展和人们生活水平的提高,宠物已成为许多家庭不可或缺的重要成员。宠物市场的繁荣不仅体现在宠物数量的激增上,更在于宠物相关服务......
  • java+vue计算机毕设宠物领养系统【源码+开题+论文+程序】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着城市化进程的加速,人类生活与宠物之间的联系日益紧密,但同时也带来了流浪宠物数量激增的社会问题。流浪宠物不仅面临着生存的挑战,还可能成为疾病传......
  • json字符串转义格式化后再转换处理demo StringEscapeUtils.unescapeJava
    json字符串转义格式化后再转换处理demoStringEscapeUtils.unescapeJava报错关键字:illegalidentifierExpectedBEGIN_OBJECTbutExpectednameatpackagecom.example.core.mydemo;importcom.alibaba.fastjson.JSON;importcom.fasterxml.jackson.core.JsonProcessingE......
  • aspose word指定位置插入图片,借助word模板文件中的书签来定位 及Java 获取网络图片
    asposeword指定位置插入图片,借助word模板文件中的书签来定位 及Java 获取网络图片链接:asposeword模板文件生成pdfhttps://www.cnblogs.com/oktokeep/p/16615900.html在Aspose.Words中,您可以使用DocumentBuilder类在指定位置插入图片。以下是一个简单的示例代码,展示如何实现......
  • Linux网络操作的通用接口:Socket是怎么使用的?
    前言如果你在工作学习中经常见到socket相关的字眼,但总是未曾深究过其本质,相信这篇文章能够给你带来一些帮助。网络是计算机体系中绕不开的一环,而socket作为计算机网络体系的重要组成部分,也具备着相当重要的地位。但很多时候,虽然在书本或课堂上了解了TCP、IP等基础网络内容......
  • 【零基础 快速学Java】韩顺平 零基础30天学会Java--- 常用类(2024JavaReview)
    包装类包装类的分类(针对八种基本数据类型相应的引用类型—包装类)(有了类的特点,就可以调用类中的方法)(实现了接口Serializable【String可以串行化:可以在网络传输】)(实现了接口Comparable[String对象可以比较大小])包装类和基本数据的转换(jdk5前的手动装箱和拆箱方式,jdk5以后(含j......