Java中的类和对象

Posted nuist__NJUPT

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中的类和对象相关的知识,希望对你有一定的参考价值。

Java中的类和对象

  • 定义一个名为Person的类
  • 包括:String类型的成员变量name,int类型的成员变量age,
  • 定义两个变量的访问方法与修改方法
  • 定义一个名为speak的方法,输出name和age
/**
 * 定义一个名为Person的类
 * 包括:String类型的成员变量name,int类型的成员变量age,
 * 定义两个变量的访问方法与修改方法
 * 定义一个名为speak的方法,输出name和age
 *
 */
public class Person {
    String name ; //成员变量
    int age ;
    public void setName(String name){ //修改方法
        this.name = name ;
    }
    public String getName(){ //访问方法
        return name ;
    }
    public void setAge(int age){
        this.age = age ;
    }
    public int getAge(){
        return age ;
    }
    public void speak(){ //自定义的方法
        System.out.println("姓名:" +  " " +  name + "年龄:" + age) ;
    }
    public static void main(String[] args){
        Person person = new Person() ; //实例化类的对象
        person.setName("王国栋") ;
        person.setAge(24) ;
        System.out.println("姓名:" + person.getName() + " " + "年龄:" + person.getAge()) ;
        person.speak() ;
    }
}

  • 定义一个Circle类
  • 包括:double类型的圆心坐标centreX和centreY
  • double类型圆形的半径radius,为半径定义访问和修改方法
  • 定义求面积的方法getArea()和求周长的方法getPerimeter()
  • 定义带参数的构造方法,给出圆形的半径创建圆形的对象
  • 定义默认的构造方法,在该方法中调用带参数的构造方法,将圆形的半径设置为1.0

/**
 * 定义一个Circle类
 * 包括:double类型的圆心坐标centreX和centreY
 * double类型圆形的半径radius,为半径定义访问和修改方法
 * 定义求面积的方法getArea()和求周长的方法getPerimeter()
 * 定义带参数的构造方法,给出圆形的半径创建圆形的对象
 * 定义默认的构造方法,在该方法中调用带参数的构造方法,将圆形的半径设置为1.0
 */
public class Circle {
    double centreX ;
    double centreY ;
    double radius ;
    public Circle(){
        this(1.0) ;
    }
    public Circle(double radius ){
        this.radius = radius ;
    }
    public void setRadius(double radius){
        this.radius = radius ;
    }
    public double getRadius(){
        return radius ;
    }
    public double getArea(){
        return Math.PI * radius * radius ;
    }
    public double getPerimeter(){
        return 2 * Math.PI * radius ;
    }
    public static void main(String[] args){
        Circle circle = new Circle()  ;
        System.out.println("圆形的半径:" + circle.radius) ;
        System.out.println("圆形的面积:" + circle.getArea()) ;
        System.out.println("圆形的周长:" + circle.getPerimeter()) ;
        circle.setRadius(2.0) ;
        System.out.println("圆形的半径:" + circle.getRadius()) ;
        System.out.println("圆形的面积" + circle.getArea()) ;
        System.out.println("圆形的周长:" + circle.getPerimeter()) ;
    }
}

  • 定义一个Rectangle类
  • 包括:double型的length和width的成员变量,为变量定义访问方法和修改方法
  • 定义求周长getPerimeter()和求面积gteArea()的方法
  • 定义带参数的构造方法,通过给出的长和宽创建对象
  • 定义默认构造方法,在该方法中 调用带参数的构造方法,将矩形的长和宽都设置为1.0
/**
 * 定义一个Rectangle类
 * 包括:double型的length和width的成员变量,为变量定义访问方法和修改方法
 * 定义求周长getPerimeter()和求面积gteArea()的方法
 * 定义带参数的构造方法,通过给出的长和宽创建对象
 * 定义默认构造方法,在该方法中 调用带参数的构造方法,将矩形的长和宽都设置为1.0
 */
public class Rectangle {
    double length ; //成员变量
    double width ;
    public Rectangle(){ //默认的构造方法,调用带参数的构造方法
        this(1.0,1.0) ;
    }
    public Rectangle(double length, double width){ //带两个参数的构造方法
        this.length = length ;
        this.width = width ;
    }
    public void setLength(double length){ //修改方法
        this.length = length ;
    }
    public double getLength(){ //访问方法
        return length ;
    }
    public void setWidth(double width){
        this.length = length ;
    }
    public double getWidth(){
        return width ;
    }
    public double getArea(){ //计算面积方法
        return length * width ;
    }
    public double getPerimeter(){ //计算周长的方法
        return 2 * (length + width) ;
    }
    public static void main(String[] args){
        Rectangle rectangle = new Rectangle() ;
        System.out.println("长为:" + rectangle.getLength()) ;
        System.out.println("宽为:" + rectangle.getWidth()) ;
        System.out.println("矩形的面积为:" + rectangle.getArea()) ;
        System.out.println("矩形的周长为:" + rectangle.getPerimeter()) ;
        rectangle.setLength(3.0) ;
        rectangle.setWidth(2.0) ;
        System.out.println("长为:" + rectangle.getLength()) ;
        System.out.println("宽为:" + rectangle.getWidth()) ;
        System.out.println("矩形的面积为:" + rectangle.getArea()) ;
        System.out.println("矩形的周长为:" + rectangle.getPerimeter()) ;
    }
}

  • 定义Triangle类
  • 包括:三个double型的变量a,b,c表示三边长
  • 定义两个构造方法 ,默认构造方法设置三边长都为0.0
  • 带三个参数的构造方法通过传递三个参数创建三角形对象
  • 定义求面积的方法area(),面积计算公式为:area = Math.sqrt(s*(s-a)(s-b)(s-c)),其中s=(a+b+c)/2
/**
 * 定义Triangle类
 * 包括:三个double型的变量a,b,c表示三边长
 * 定义两个构造方法 ,默认构造方法设置三边长都为0.0
 * 带三个参数的构造方法通过传递三个参数创建三角形对象
 * 定义求面积的方法area(),面积计算公式为:area = Math.sqrt(s*(s-a)*(s-b)*(s-c)),其中s=(a+b+c)/2
 */
public class Triangle {
    double a, b, c ;
    public Triangle(){
        this.a = 0.0;
        this.b = 0.0 ;
        this.c = 0.0 ;
    }
    public Triangle(double a, double b, double c){
        this.a = a ;
        this.b = b ;
        this.c = c ;
    }
    public double area(){
        double s = (a + b + c) / 2 ;
        return Math.sqrt(s*(s-a)*(s-b)*(s-c)) ;
    }
    public static void main(String[] args){
        Triangle triangle = new Triangle(3.0,3.3,3.0) ;
        System.out.println(triangle.area()) ;
    }
}

  • 定义一个Stock类表示股票
  • 一个名为symbol的字符串数据表示股票代码
  • 一个名为name的字符串数据表示股票名称
  • 一个名为previousPrice的double类数据,表示前一日的股票价格
  • 一个名为currentPrice的double型数据,表示股票的当前价格
  • 创建一个名为getChangePercent()的方法,返回从前一日价格到当前价格变化的百分比

/**
 * 定义一个Stock类表示股票
 * 一个名为symbol的字符串数据表示股票代码
 * 一个名为name的字符串数据表示股票名称
 * 一个名为previousPrice的double类数据,表示前一日的股票价格
 * 一个名为currentPrice的double型数据,表示股票的当前价格
 * 创建一个名为getChangePercent()的方法,返回从前一日价格到当前价格变化的百分比
 */
public class Stock {
    String symbol ; //成员变量
    String name ;
    double previousPrice ;
    double currentPrice ;
    public Stock(String symbol, String name){ //带两个参数的构造方法
        this.symbol = symbol ;
        this.name = name ;
    }
    public void setPreviousPrice(double previousPrice){ //修改方法
        this.previousPrice = previousPrice ;
    }
    public double getPreviousPrice(){ //访问方法
        return previousPrice ;
    }
    public void setCurrentPrice(double currentPrice){
        this.currentPrice = currentPrice ;
    }
    public double getCurrentPrice(){
        return currentPrice;
    }
    public double getChangePercent(){ //求百分比的方法
        return 100 * ((getCurrentPrice() - getPreviousPrice()) / getPreviousPrice() );
    }
    public static void main(String[] args){
        Stock stock = new Stock("600000","浦发银行") ;
        stock.setCurrentPrice(25.5) ;
        stock.setPreviousPrice(28.6) ;
        System.out.println(stock.getChangePercent()) ;
    }
}

  • 使用递归打印斐波那契数列的前20项
  • 斐波那契数列第一个和第二个数都是1,以后每个数是前两个数字之和
/**
 * 使用递归打印斐波那契数列的前20项
 * 斐波那契数列第一个和第二个数都是1,以后每个数是前两个数字之和
 */
public class Fibonacci {
    public static long fib(int n){
        if(n == 1 || n == 2){
            return 1 ;
        }
        return  fib(n-1) + fib(n - 2) ;
    }
    public static void main(String[] args){
        for(int i=1; i<=20; i++){
            System.out.print(fib(i) +  " ") ;
        }
    }
}

  • 为二元一次方程设计一个名为 QuadraticEquation的类
  • 包括:三个私有数据a,b,c
  • 一个带参数a,b,c的构造方法
  • a,b,c三个get方法
  • 一个名为getDiscriminant()的方法返回判别式b^2-4ac
  • 名为getRoot1()的方法和getRoot2()的方法返回方程的两个根
/**
 * 为二元一次方程设计一个名为 QuadraticEquation的类
 * 包括:三个私有数据a,b,c
 * 一个带参数a,b,c的构造方法
 * a,b,c三个get方法
 * 一个名为getDiscriminant()的方法返回判别式b^2-4*a*c
 * 名为getRoot1()的方法和getRoot2()的方法返回方程的两个根
 */
public class QuadraticEquation {
    private double a, b, c ; //成员变量
    public QuadraticEquation(double a, double b, double c){ //带三个参数的构造方法
        this.a = a ;
        this.b = b ;
        this.c = c ;
    }
    public double getA(){ //访问方法
        return a ;
    }
    public double getB(){
        return b ;
    }
    public double getC(){
        return c ;
    }
    public double getDiscriminant(){ //得到判别式b^2-4*a*c的方法
        return b * b - 4 * a * c ;
    }
    public double getRoot1(){ //第一个根
        return (-b + Math.sqrt(getDiscriminant())) / (2 * a) ;
    }
    public double getRoot2(){ //第二个根
        return (-b - Math.sqrt(getDiscriminant())) / (2 * a) ;
    }

    public static void main(String[] args){
        Scanner input = new Scanner(System.in) ;
        double a = input.nextDouble() ; //键盘输入三个系数
        double b = input.nextDouble() ;
        double c = input.nextDouble() ;
        QuadraticEquation quadraticEquation = new QuadraticEquation(a, b, c) ;
        System.out.println("系数a = " + quadraticEquation.getA() + " " + "系数b = " + quadraticEquation.getB() + " " + "系数c = " + quadraticEquation.getC()) ;
        if(quadraticEquation.getDiscriminant() < 0){
            System.out.println("方程无根!") ;
        }
        else if(quadraticEquation.getDiscriminant() == 0){
            System.out.println("方程的唯一根为:" + quadraticEquation.getRoot1()) ;
        }
        else{
            System.out.println("方程的第一个根为:" + quadraticEquation.getRoot1()) ;
            System.out.println("方程的第二个根为:" + quadraticEquation.getRoot2()) ;
        }

    }
}

  • 定义一个名为TV的电视类
  • 每个电视机都是一个对象,每个对象都有状态(电源开或关,当前频道,当前音量)
  • 以及动作(打开,关闭,转换频道,调节音量等)
  • 频道1-100,音量1-7
/**
 * 定义一个名为TV的电视类
 * 每个电视机都是一个对象,每个对象都有状态(电源开或关,当前频道,当前音量)
 * 以及动作(打开,关闭,转换频道,调节音量等)
 * 频道1-100,音量1-7
 */
public class TV {
    private  int channel = 1 ; //TV的当前频道
    private int volumeLevel = 1  ; //TV的当前音量
    private boolean on ; //TV是开还是关

    public TV(){} //默认构造方法
    public void turnOn(){ //打开TV
        on = true ;
    }
    public void turnOff(){ //关闭TV
        on = false ;
    }
    public void setChannel(int newChannel){ //设置新频道
        if(on && (newChannel >= 1 && newChannel <= 100)){
            channel = newChannel ;
        }
    }
    public void setVolume(int newVolume){ //设置新音量
        if(on && (newVolume >= 1 && newVolume <= 7)){
            volumeLevel = newVolume ;
        }
    }
    public void channelUp(){ //频道加1
        if(on && channel < 100) {
            channel++;
        }
    }
    public void channelDown(){ //频道减1
        if(on && channel > 1){
            channel -- ;
        }
    }
    public void volumeUp(){ //音量加1
        if(on && volumeLevel < 7){
            volumeLevel ++ ;
        }
    }
    public void volumeDown(){ //音量减1
        if(on && volumeLevel > 1){
            volumeLevel -- ;
        }
    }

    public static void main(String[] args){
        TV tv = 以上是关于Java中的类和对象的主要内容,如果未能解决你的问题,请参考以下文章

scala中的类和对象

kotlin语言中的类和对象

Java中的类和对象

Java中的类和对象

Java中的类和对象

Java中的类和对象