J2SE之面向对象_重载_this_static_package_import_继承_访问控制

方法的重载

构造方法重载

对象的创建和使用

class Point {
    private double x;
    private double y;
    Point(double x1, double y1) {
        x = x1;
        y = y1;
    }
    public double getX() { return x; }
    public double getY() { return y; }
    public void setX(double i) { x = i; }
    public void setY(double i) { y = i; }
}

class Circle {
    private Point o;
    private double radius;
    Circle(Point p, double r) {
        o = p;
        radius = r;
    }
    Circle(double r) {
        o = new Point(0.0, 0.0);
        radius = r;
    }

    boolean contains(Point p) {
        double x = p.getX() - o.getX();
        double y = p.getY() - o.getY();
        if(x*x + y*y > radius * radius) return false;
        else return true;
    }

    public void setO(double x, double y) {
        o.setX(x);
        o.setY(y);
    }
    public Point getO() { return o; }
    public double getRadius() { return radius;}
    public void setRadius(double r) { radius = r;}
    public double area() {
        return 3.14 * radius * radius;
    }
}

public class TestCircle {
    public static void main(String args[]) {
        Circle c1 = new Circle(new Point(1.0,2.0), 2.0);
        Circle c2 = new Circle(5.0);
        System.out.println("c1:("+c1.getO().getX()+","
            +c1.getO().getY()+"),"+c1.getRadius());
        System.out.println("c2:("+c2.getO().getX()
            +","+c2.getO().getY()+"),"+c2.getRadius());
        System.out.println("c1 area = "+c1.area());
        System.out.println("c1 area = "+c2.area());
        c1.setO(5,6);
        c2.setRadius(9.0);
        System.out.println("c1:("+c1.getO().getX()+","
            +c1.getO().getY()+"),"+c1.getRadius());
        System.out.println("c2:("+c2.getO().getX()+","
            +c2.getO().getY()+"),"+c2.getRadius());
        System.out.println("c1 area = "+c1.area());
        System.out.println("c1 area = "+c2.area());

        Point p1 = new Point(5.2, 6.3);
        System.out.println(c1.contains(p1));
        System.out.println(c1.contains(new Point(10.0,9.0)));

    }
}

TestCircle.java

this关键字

static关键字

public class Cat {
    private static int sid = 0;
    private String name;
    int id;
    Cat(String name) {
        this.name = name;
        id = sid++;
    }
    public void info(){
        System.out.println
               ("My name is "+name+" No."+id);
    }
    public static void main(String arg[]){

        Cat.sid = 100;
        Cat mimi = new Cat("mimi");
        mimi.sid = 2000;
        Cat pipi = new Cat("pipi");
        mimi.info();
        pipi.info();
    }
}

Cat.java

package 和 import语句

J2SDK中主要的包介绍

类的继承与权限控制

class Person {
    private String name;
    private int age;
    public void setName(String name) {
        this.name=name;
    }
    public void setAge(int age) {
        this.age=age;
    }
    public String getName(){
        return name;
    }
    public int getAge(){
        return age;
    }
}

class Student extends Person {
    private String school;
    public String getSchool() {
        return school;
    }
    public void setSchool(String school) {
        this.school =school;
    }
}

public class Test {
    public static void main(String arg[]){
        Student student = new Student();
        student.setName("John");
        student.setAge(18);
        student.setSchool("SCH");
        System.out.println(student.getName());
        System.out.println(student.getAge());
        System.out.println(student.getSchool());
    }
}

TestPerson.java

访问控制

public class TestAccess {
}

class T {
    private int i = 0;
                    int j = 0;
    protected int k = 0;
    public int m = 0;

    public void m() {
        i = 9;
    }
}

class TT {
    public void m() {
        T t = new T();
        System.out.println(t.j);
    }
}

TestAccess.java

时间: 2024-08-10 23:29:12

J2SE之面向对象_重载_this_static_package_import_继承_访问控制的相关文章

C++ Primer笔记12_运算符重载_递增递减运算符_成员访问运算符

1.递增递减运算符 C++语言并不要求递增递减运算符必须是类的成员.但是因为他们改变的正好是所操作对象的状态,所以建议设定为成员函数. 对于递增与递减运算符来说,有前置与后置两个版本,因此,我们应该为类定义两个版本的递增与递减运算符. 问题来了,程序是如何区分前置和后置呢?因为都是++和-- 为了解决这个问题,后置版本的递增递减运算符接受一个额外的(不被使用)int类型的形参.当我们使用后置运算符时,编译器为这个形参提供一个值为0的实参.这个形参唯一的作用就是区分前置和后置运算符函数. 因为不会

C++_练习—继承_公有继承

公有继承 公有继承 public: 当类的继承方式为公有继承时,基类的公有和保护成员的访问属性在派生类中  不变,而基类的私有成员不可访问. 即基类的公有成员和保护成员被继承到派生类中仍作为派生类的公有成员和保护成员.派生类的其他成员可以直接访问它们.无  论派生类的成员还是派生类的对象都无法访问基类的私有成员. 公有继承:当公有继承时,基类的公有变成派生类的公有,保护变成派生类的保护,私有不可以直接被派生类访问,可通过公有和保护间接访问! 1 #include <iostream> 2

面向对象,类的继承

面向对象一种认识世界.分析世界的方法论.将万事万物抽象为类.类class类是抽象的概念,是万事万物的抽象,是一类事物的共同特征的集合.用计算机语言来描述类,就是属性和方法的集合.对象instance.object对象是类的具象,是一个实体.对于我们每个人这个个体,都是抽象概念人类的不同的实体. 面向对象3要素 封装组装:将数据和操作组装到一起.隐藏数据:对外只暴露一些接口,通过接口访问对象.比如驾驶员使用汽车,不需要了解汽车的构造细节,只需要知道使用什么部件怎么驾驶就行,踩了油门就能跑,可以不了

(1) 深入理解Java面向对象三大特性 封装 继承 多态

转眼已经工作快6年了,最开始做了2年J2EE:然后整了2年的数据仓库,主要是Cognos的报表开发:现在从事4G LTE核心网的开发,用的语言任然是Java,但写代码的机会不多,基本都是看代码找BUG,偶尔做点new feature也是在比较成熟的框架上复制.粘贴.修改,大部分时间还是在理解业务,钱多.事少.离家近,当时来这家公司图的是后面2点,2年过去了,英文水平有所提升,对敏捷开放也有一定的了解,但技术方面明显退步了或者说没有进步吧,本来以前也不怎么好,因为工作上用不到,自己也没怎么学习,所

python开发面向对象基础:组合&amp;继承

一,组合 组合指的是,在一个类中以另外一个类的对象作为数据属性,称为类的组合      人类装备了武器类就是组合 1.圆环,将圆类实例后传给圆环类 1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 4 #circle,圆类 5 from math import pi 6 class Circle: 7 def __init__(self,radius): 8 self.radius = radius 9 def perimeter(self): 10

7Python全栈之路系列之面向对象运算符重载

Python全栈之路系列之面向对象运算符重载 运算符重载的概念如下: 运算符重载让类拦截常规的Python运算: 类可重载所有Python表达式运算符: 类也可重载打印.函数调用.属性点号运算等内置运算: 重载是类实例的行为想内置类型: 重载是通过提供特殊名称的类方法来实现的: 常见的运算符重载方法 方法 重载 调用 __init__ 构造函数 对象建立:X = Class(args) __del__ 解析函数 X对象收回 __add__ 运算符+ 如果没有__iadd__,X+Y,X+=Y _

面向对象(一)—继承与多态

又一次深入的学习设计模式,发现了很多以前感觉不是问题的问题,这才发现原来自己不是真的理解了.通过这次的深入学习,才开始慢慢感受到OO的魅力所在. 从C#学习到设计模式,再到机房收费系统个人版和合作版,再到我们做的项目,我们真正的朝着面向对象编程了吗?我的项目中,先不说泛型.委托.集合的利用率,就是基本的继承.多态用的少之又少. 下面将为大家解说"OO引领编程"之--继承和多态 继承篇 一.简介 俗话说:龙生龙凤生凤,老鼠的儿子会打洞.可以理解为,继承就是小辈拥有父辈流传下来的东西. 在

软件工程_东师站_第十周作业

一.PSP Data Type Job start Int End Total 20160510 助教 团队作业二 20:00 5 21:00 55 20160511 助教 团队作业二.三 18:45 16 20:45 104 20160512 耐撕 站立会议 18:15   18:35 20 二.进度条   代码行数 博客字数 知识点 第一周 400 430 见我博客软件工程——师大站1 第二周 0 5200 见我博客软件工程_东师站_课堂笔记 第三周 0 63 站立会议.单元测试 第四周 1

IOS_地图_定位_天气预报_Block回调_单例

H:/1021/00_block回调.h /* 通过block回调 定义block代码块,目的是解析完成之后调用 返回值是 void 参数是 数组,里面的每个成员是一个NSString*/ typedef void(^WeatherFinishedBlock)(NSArray *dataList); @interface WeatherXMLPaser : NSObject // 解析器解析数据,参数1是要解析的数据,参数2是解析完毕回调的代码块 - (void)parserWeatherDat