码迷,mamicode.com
首页 > 编程语言 > 详细

Java内构造函数、关键字、权限修饰符、访问控制及面向对象的特性!

时间:2017-05-16 21:35:04      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:构造   访问   控制   绝对值   height   返回值   pre   his   情况   

 

1, 构造函数(构造方法)
  在使用 new 来创建一个对象的时候就是调用的这个类的一个构造方法(构造函数), 构造方法名与类同名, 并且没有返回值(没有返回值也不要写void)

  空参的构造函数和有参数的构造函数

  注释, 命名规则!!!!!!!!!!

2, 继承中的构造函数:
  --子类的构造方法必须调用父类的构造方法
  --super(), 调用父类的构造方法, this()调用本类中另外的构造方法

3, 关键字this, static, package和import语句
  this:
    --在类的方法定义中使用this关键字代表使用该方法的对象的引用

    --当必须指出当前使用方法的对象是谁时要使用this

    --有时this可以处理方法中成员变量和参数重名的情况

    --this可以看作是一个变量, 它的值是当前对象的引用

  static(不在堆里面也不在栈里面, 在数据区(data seg)):

    --类名直接 . 出来的变量是静态变量, 每个类里面的静态变量只有一份, 是公用的(赋值后每个实例化的类都可使用)

    --静态方法中不可访问非静态成员

    --静态变量和静态方法不需要实例化

  package:

    便于管理大型软件系统中数目众多的类, 解决类名重名的现象

4, 访问控制, 权限修饰符(public private default protected)

        技术分享
  puclic class 类名 {

    private 类型 属性1;

    private 类型 属性2;

    set, get
  }
5, 面向对象的三大特性: 封装, 继承, 多态
  封装(...)

  继承:

    子类拥有父类的属性和方法

    Object.finalize();调用这个方法来释放资源

  多态((执行期间)动态绑定, 池绑定):

  重载(overload):

    方法名相同, 只有参数类型不同或者参数个数不同, 返回值不同是不能构成重载的

  重写(overwrite / override):

    将父类的方法重新定义

    --在子类中可以根据需要从父类中集成来的方法进行重写

    --重写方法必须和被重写的方法具有相同的方法名, 参数列表和返回类型

    --重写方法不能使用比被重写方法更严格的访问权限

  toString方法的重写

  equals方法的重写

6,super, final关键字

  super: 指向父类的引用

  final的变量值不能改变

  final的方法不能被重写

  final的类不能被继承

7, 对象转型

  --父类的引用可以指向其子类的对象

  --父类的引用不可以访问其子类对象新增的成员(包括属性和方法)

  --可以使用instanceof关键字来判断一下


 

 

public class TestWrapper {
    public static void main(String[] args) {
        
        //包装类和java编程中常用的类Math
        
        String s = "12345";
        
        System.out.println("转换为数字的字符串: "+Integer.parseInt(s));
      //Math类
        //圆周率
        System.out.println(Math.PI);
        //自然对数
        System.out.println(Math.E);
        
        //三角函数
        //Math.sin(12.34);
        //Math.tan(12.34);
        //...
        //指数函数
        //Math.exp(12.34);
        //Math.log(12.34);
        //...
        
        //取整常用方法, 取整, 向上取整, 向下取整
        System.out.println(Math.rint(12.74));//跟谁近取谁
        System.out.println(Math.floor(12.74));//取最小整数
        System.out.println(Math.ceil(12.34));//取最大整数
        System.out.println(Math.round(12.34));//正儿八经的四舍五入, 返回long型整数
        System.out.println(Math.min(12.34, 23.45));//取两个数比较小的那个
        System.out.println(Math.max(12.34, 23.45));//取两个数比较大的那个
        System.out.println(Math.abs(-23));//取绝对值
                
    }
}

  例题:定义一个圆的类, 定义一个点, 并计算这个点是否在圆的范围内

public class Point
{
    private double x;
    public double y;

    public Point(double x, double y) {
        this.x = x;
        this.y = y;
    }

    public double getX() {
        return this.x;
    }
}
package com.maya.test;

public class Yuan {
    public double x;
    public double y;
    public double r;
    
    public Yuan(double x,double y,double r){
        this.x = x;
        this.y = y;
        this.r = r;
    }
    
    public void suan(Point p){
        double l = Math.abs(Math.sqrt((x-p.x)*(x-p.x)+(y-p.y)*(y-p.y)));
        if(l>r){
            System.out.println("不在圆内");
        }else{
            System.out.println("在圆内");
        }
    }
}
package com.maya.test;

public class Main {
    public static void main(String[] args){
    Point n = new Point(3,4);
    Yuan s = new Yuan(2.2,3.3,5);
    s.suan(n);
    }
}

 

Java内构造函数、关键字、权限修饰符、访问控制及面向对象的特性!

标签:构造   访问   控制   绝对值   height   返回值   pre   his   情况   

原文地址:http://www.cnblogs.com/bekeyuan123/p/6863588.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!